Fortunately for you, I actually just finished spending quite a few hours researching how
to run JAX-WS POJO web services in Tomcat, with success :).
First off, JBossWS 2.0 doesn't support Tomcat (though it *may* work); only 1.x does.
It also seems to require web services to be bundled separately from the main application
WAR (AFAIK). Because of those things, JBossWS was out of the running for me.
The only webservice framework I was able to find that supported production-quality
webservices in the main WAR was Apache CXF 2.0. So far, it seems to work very nicely,
though it doesn't integrate with Seam conversations (Seam only has a handler for
JBossWS for that currently, though one for CXF could likely be easily created).
I probably should write a tutorial in the Wiki for setting CXF up, but in the meantime
here's how I got a basic HelloWorld up and running in my Seam app:
pom.xml (if you use Maven):
<dependency>
| <groupId>org.apache.cxf</groupId>
| <artifactId>cxf-rt-frontend-jaxws</artifactId>
| <version>2.0.2-incubator</version>
| <exclusions>
| <exclusion>
| <!-- A large (2+mb) dependency that doesn't appear to be needed -->
| <groupId>com.sun.xml.bind</groupId>
| <artifactId>jaxb-xjc</artifactId>
| </exclusion>
| </exclusions>
| </dependency>
| <dependency>
| <groupId>org.apache.cxf</groupId>
| <artifactId>cxf-rt-transports-http</artifactId>
| <version>2.0.2-incubator</version>
| </dependency>
HelloWorld.java:
package com.demo.webservice;
|
| import javax.jws.*;
| import javax.jws.soap.SOAPBinding;
| import javax.jws.soap.SOAPBinding.*;
|
| @WebService
| @SOAPBinding(parameterStyle=ParameterStyle.BARE)
| public interface HelloWorld{
| String sayHi(@WebParam(name="addressee") String text);
| }
HelloWorldImpl.java:
package com.demo.webservice;
|
| import javax.jws.WebService;
|
| @WebService(endpointInterface = "com.demo.webservice.HelloWorld",
| serviceName = "HelloWorld")
| public class HelloWorldImpl implements HelloWorld{
|
| public String sayHi(String text) {
| return "Hello " + text;
| }
| }
cxf-servlet.xml (in WEB-INF):
<beans
xmlns="http://www.springframework.org/schema/beans"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:jaxws="http://cxf.apache.org/jaxws"
|
xmlns:soap="http://cxf.apache.org/bindings/soap"
| xsi:schemaLocation="
|
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.xsd
|
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
|
| <jaxws:endpoint
| id="hello_world"
| implementor="com.demo.webservice.HelloWorldImpl"
| address="/hello_world">
| </jaxws:endpoint>
| </beans>
Added into your web.xml:
<servlet>
| <servlet-name>cxf</servlet-name>
|
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
| <load-on-startup>1</load-on-startup>
| </servlet>
| <servlet-mapping>
| <servlet-name>cxf</servlet-name>
| <url-pattern>/services/*</url-pattern>
| </servlet-mapping>
That's it! Just open your browser to
http://host:port/context/services/, and it should
give a link to the webservice's WSDL file.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4104691#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...