Monday June 18, 2007
Fabian explained how WSIT features can be configured on Java SE 6 Endpoint API exposed as part of JAX-WS 2.1. In this blog, I start with a Reliable Messaging-enabled endpoint developed using NetBeans IDE 5.5.1 and WSIT plug-in and then provide detailed steps, along with code, to deploy it in Java SE 6.
jre\lib\endorsed'
directory.Web Pages', 'WEB-INF'. The
configuration file be named something similar to 'wsit-server.HelloWebService.xml'
following the format 'wsit-<packageName>.<ServiceName>.xml'.
Here is how the config file looks like:Copy this config file by the name
<?xml version="1.0" encoding="UTF-8"?> <definitions
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="HelloWebServiceService" targetNamespace="http://server/" xmlns:tns="http://server/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsaws="http://www.w3.org/2005/08/addressing" xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm/policy">
<message name="sayHello"/>
<message name="sayHelloResponse"/>
<portType name="HelloWebService">
<wsdl:operation name="sayHello">
<wsdl:input message="tns:sayHello"/>
<wsdl:output message="tns:sayHelloResponse"/>
</wsdl:operation>
</portType>
<binding name="HelloWebServicePortBinding" type="tns:HelloWebService">
<wsp:PolicyReference URI="#HelloWebServicePortBindingPolicy"/>
<wsdl:operation name="sayHello">
<wsdl:input/>
<wsdl:output/>
</wsdl:operation>
</binding>
<service name="HelloWebServiceService">
<wsdl:port name="HelloWebServicePort" binding="tns:HelloWebServicePortBinding"/>
</service>
<wsp:Policy wsu:Id="HelloWebServicePortBindingPolicy">
<wsp:ExactlyOne>
<wsp:All>
<wsaws:UsingAddressing xmlns:wsaws="http://www.w3.org/2006/05/addressing/wsdl"/>
<wsrm:RMAssertion/>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
</definitions>
wsit-server.HelloWebService.xml in META-INF directory in your classpath.package server;As you see, this is a plain JAX-WS Web service endpoint class.
import javax.jws.*;
@WebService(targetNamespace="http://server/")
public class HelloWebService {
@WebMethod
public String hello(@WebParam(name="name")String text) {
return "Hello " + text;
}
}
package server;
import java.io.IOException;
import javax.xml.ws.Endpoint;
public class Main {
private static final int PORT = 58888;
private static final String HOST = "localhost";
public static void main(String[] args) {
Endpoint endpoint = Endpoint.create(new HelloWebService());
String address = "http://" + HOST + ":" + PORT + "/";
endpoint.publish(address);
System.out.println("Endpoint hosted at ... " + address);
}
}
"\Program Files\Java\jdk1.6.0_01\bin\javac.exe" -d . server\*.java
"\Program Files\Java\jdk1.6.0_01\bin\wsgen.exe" -cp . server.HelloWebService
java -classpath .;\jax-ws-latest-wsit\lib\webservices-rt.jar server.Main
java -classpath .;C:\testbed\jax-ws-latest-wsit\lib\webservices-rt.jar server.Main
Jun 18, 2007 4:46:34 PM [com.sun.xml.ws.policy.jaxws.PolicyConfigParser] parse
INFO: WSP1049: Loaded WSIT configuration from file:
file:/C:/workarea/wsit/javase6/META-INF/wsit-server.HelloWebService.xml
Jun 18, 2007 4:46:34 PM [com.sun.xml.ws.tx.common.TxMapUpdateProvider] update
INFO: WSTX-COMMON-2005: running in a non Java EE container; disable mapping of Container Managed Transaction EJB to WS-AT Policy assertions due to 'javax/ejb/TransactionManagement'
Endpoint hosted at ... http://localhost:58888/
That's it, the endpoint now deployed at 'http://localhost:58888/MyService?wsdl'
is Reliable Messaging enabled. This endpoint can be invoked using any of the
methods
shown here.
Technorati: webservices wsit jax-ws glassfish javase6
Posted by Arun Gupta in webservices | Comments[9]
|
|
|
|
|
Today's Page Hits: 2930
Total # blog entries: 994
| « November 2009 | ||||||
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|---|---|---|---|---|---|
1 | 2 | 4 | 6 | 7 | ||
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | |||||
| Today | ||||||
Posted by Pat Patterson on June 18, 2007 at 11:51 PM PDT #
Posted by Arun on June 19, 2007 at 06:03 AM PDT #
Awesome stuff.. very helpful. Can you give me the code how to write for login page using web service in java. It would be helpful. thank you
Posted by saikrishna on November 02, 2007 at 07:35 AM PDT #
saikrishna, The code will be no different that invoking any other Web service. You just need to make sure your client-side artifacts are bundled in the WAR file though.
Posted by Arun Gupta on November 04, 2007 at 03:39 PM PST #
Great example!
I need to be able "runtime" to choose wsit config file. One way would be to have multiple "WEB-INF/..xml" and add exactly one of them to the jvm classpath.
A dream scenario would be if I could do this programmatically at startup, like WSITEnginde.setConfig("mywsit.xml"). It might be possible when looking at the PolicyConfigParser.java ..
Posted by Rickard Lundin on February 13, 2008 at 06:06 AM PST #
Rickard, it would be easier to discuss your scenario on the mailing list users@metro.dev.java.net: https://metro.dev.java.net/servlets/ProjectMailingListList
You are having at least two options, both of which are a bit lengthy to explain. I am working on a blog entry right now and will have that ready and published by Monday at the latest. I will keep you posted.
Tjenare, Fabian
Posted by Fabian Ritzmann on February 14, 2008 at 06:22 AM PST #
Rickard, I am discussing the options you are having here: http://blogs.sun.com/ritzmann/entry/non_standard_wsit_configuration_file
Posted by Fabian Ritzmann on February 18, 2008 at 08:30 AM PST #
<html>
<body>
Hi, I have a problem of accessing web service methods, I have user name and password and I am using netbeans 6 but I don't know how to use them. I developing web service client. Server have been developed by other programmer they just given me wsdl file only.
I always I get this kind of exception
javax.xml.ws.soap.SOAPFaultException: WSDoAllReceiver: Request does not contain required Security header
at com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:187)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:116)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:254)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:224)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:117)
</body>
</html>
Posted by Ali on April 18, 2008 at 12:46 PM PDT #
Hi, I have a problem of accessing web service methods, I have user name and password and I am using netbeans 6 but I don't know how to use them. I developing web service client. Server have been developed by other programmer they just given me wsdl file only.
Posted by BATTERY on November 27, 2008 at 04:54 PM PST #