If the SEI code were accessible from the client within the same package, do I still need the following code in order to access the service code?
URL url = new URL("http://localhost:8080/ws1?wsdl");
QName qname = new QName("http://webmethod.huahsin.org/", "HelloWorldImplService");
HelloWorldImplService service = new HelloWorldImplService(url, qname);
IHelloWorld manager = service.getHelloWorldImplPort();
System.out.println(manager.sayHelloWorld());
Imaging I have the following SEI code and there are sit in the same application:
package org.huahsin.webmethod;
…
@WebService
@SOAPBinding(style=Style.DOCUMENT)
public interface IHelloWorld {
@WebMethod
String sayHelloWorld();
}
package org.huahsin.webmethod;
…
@WebService(endpointInterface="org.huahsin.webmethod.IHelloWorld")
public class HelloWorldImpl implements IHelloWorld {
@Override
public String sayHelloWorld() {
return "Hello World";
}
}
I just feel a bit weird in doing this since both client code and server code are live in the same application. I did a search on the forum and got to know that web service code can be accessed through EJB. Just "top up" the
@Stateless and
@Remote to the SEI and we are done.
@Remote
@WebService
@SOAPBinding(style=Style.DOCUMENT)
public interface IHelloWorld {
@WebMethod
String sayHelloWorld();
}
package org.huahsin.webmethod;
…
@Stateless
@WebService(endpointInterface="org.huahsin.webmethod.IHelloWorld")
public class HelloWorldImpl implements IHelloWorld {
@Override
public String sayHelloWorld() {
return "Hello World";
}
}
To access the web service code in EJB way, do the following (excuse myself, I'm doing it in JSF bean):
@ManagedBean
@RequestScoped
public class HelloWorldController {
@EJB
private IHelloWorld helloWorld;
...
...
Sound cool? The best part of this is no more generating stub code.
No comments:
Post a Comment