Playing around with EJB3.0 for a while, I decided to try the special webservice annotations set of EJB3.0 for deploying an EJB as a webservice.Looking at the documentation, I discovered that that this feature is based on the new Java XML webservice API called JAX-WS (JSR-224), which is in real JAX-RPC 2.0. I decided to build a EJB3.0 with special webservice methods in JDeveloper and deploy it on the Glassfish application server. Next, I developed a client for the webservice in Netbeans 5.0 using JAX-WS. I could have used JDeveloper for building the client, but I used Netbeans 5.0 for just trying a different IDE then the one I’m daily using
.
I chose JDeveloper 10.1.3 for developing the EJB3.0 webservice, because it has, as one of the few IDEs , build-in support for EJB3.0 development. The code below shows the stateless session bean with a single webservice method that returns a message.
@Stateless @WebService(serviceName = "MyFirstEJB3Service") public class WebserviceEJBBean implements WebserviceEJB { public WebserviceEJBBean() { } @WebMethod(operationName="HelloWorld") public String getHelloMessage(String s) { return "Hello " + s + "/n" +"This is my first EJB3.0 webservice developed in JDeveloper and deployed on the glassfish platform"; } }
After you have generated a jar file for your EJB module, you login into the
administration console of your Glassfish installation and deploy the jar file as
an EJB module in the console (Applications -> EJB modules).
After successfully deployed the module, you can test your webservice in the
console (Webservices -> WebserviceEJBBean )
Ok, now we have implemented and deployed an EJB3.0 webservice on the
Glassfish application server. It’s now time to make a client that consumes the
webservice. Start your Netbeans 5.0 installation and make a new basic
application project. Now you have to download the JAX-WS API binaries to you
local drive and add them a s a library to your project. Now we have to generate
artifacts to make the actual webservice call. JAX-WS contains a tool, called
wsimport, to generate artifacts from a given WSDL file. You can
integrate this tool as an ANT-task in your build file by inserting the following
code in your project build file:
<!-- Overrides -pre-compile target
java artifacts that will created and compiled to build/classes directory. -->
<target name="-pre-compile">
<mkdir dir="build/classes"/>
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
<classpath path="${javac.classpath}"/>
</taskdef>
<echo>running wsimport</echo>
<wsimport
debug="true"
keep="true"
destdir="build/classes"
package="wsimport.generated.myfirstejbws"
wsdl="http://localhost:8080/MyFirstEJB3Service/WebserviceEJBBean?WSDL"/>
</target>
Finally, add the following code to the main method of the application’s main
class and run the application to see the message returned by the webservice.
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Response from the webservice: "+"/n"+Main.testService());
}
public static String testService(){
//Use the generared artifacts to make the webservice invocation.
MyFirstEJB3Service service = new MyFirstEJB3Service();
WebserviceEJBBean proxy = service.getWebserviceEJBBeanPort();
return proxy.helloWorld("Tom Hofte");
}
I think with JAX-WS developing webservices and building clients for them
becomes really easy by using annotation and the supplied tools like
wsimport. Sun has done a great job with this new standard XML
webservice API!
本文介绍了如何使用EJB3.0和JAX-WS标准开发并部署一个简单的WebService应用。作者首先在JDeveloper中创建了一个带有WebService方法的无状态会话Bean,并将其部署到Glassfish应用服务器上。接着,在NetBeans中开发了一个客户端来调用这个WebService。

被折叠的 条评论
为什么被折叠?



