Tango on JavaSE 6
Posted by arungupta on June 18, 2007 at 8:28 PM EDT
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.
- Create a Reliable Web service endpoint using WSIT plug-in and NetBeans 5.5.1 by watching this screencast.
- Download and install
WSIT Milestone 5. Copy webservices-api.jar in Java SE 6 '
jre\lib\endorsed' directory. - All the capabilities enabled at an endpoint, such as Reliable Messaging
for this one, are stored in the WSIT configuration file. In NetBeans IDE,
expand your Project, '
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.xmlin META-INF directory in your classpath. - The Web service implementation class looks like:
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;
}
} - The JAX-WS Endpoint code that starts the Web service endpoint looks like:
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); } } - The sequence of commands to deploy the endpoint is:
"\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 - And then you see the following output on the command prompt:
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
Related Topics >>
Blog Links >>
- Login or register to post comments
- Printer-friendly version
- arungupta's blog
- 915 reads





