 |
Tango on JavaSE 6
Posted by arungupta on June 18, 2007 at 05:28 PM | Comments (0)
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:
<?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>
Copy this config file by the name wsit-server.HelloWebService.xml in META-INF directory in your classpath.
- The Web service implementation class looks like:
package server;
import javax.jws.*;
@WebService(targetNamespace="http://server/") public class HelloWebService { @WebMethod public String hello(@WebParam(name="name")String text) { return "Hello " + text; }
}
As you see, this is a plain JAX-WS Web service endpoint class.
- 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
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
|