2011-09-22 89 views
0

好友:websphere 7.0在tomcat 7.0中部署的JAXWS webservice不能正常工作

我有一个在WebSphere 7.0中开发的JAXWS webservice。它在那里工作。 Websphere中的堆栈是Axis2.0

我编写了一个POJO Java类,使用@WebService注释进行了注释,然后我做了一个wsgen来生成必要的工件并创建了war文件。

问题是web.xml中没有定义任何servlet或侦听器。 view plaincopy to clipboardprint?

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     id="WebApp_ID" version="2.5"> 
    <display-name>CMSExternalWebServices</display-name> 
    <servlet> 
    <servlet-name>Log4JControl</servlet-name> 
    <servlet-class>it.openutils.log4j.Log4jConfigurationServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Log4JControl</servlet-name> 
    <url-pattern>/Log4JControl/*</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

但是,当我将该war文件部署到Tomcat 7.0,然后将axis2 jar复制到WEB-INF \ lib文件夹。

当我重新启动Tomcat时,WebService不起作用。

我很好奇的是,Websphere7如何在启动时部署WebService,而web.xml中没有任何实体,但Tomcat拒绝这么做?

我错过了什么?

-Narahari

回答

0

的WebSphere搜索@WebService注解类路径在启动过程中,没有必要为在web.xml任何条目,这是根据Java EE 6规范。由于Tomcat并不完全支持Java EE 6(它只是一个servlet引擎),所以您必须定义一个触发器来让Axis2加载您的Web服务。据我所知,你必须在web.xml中定义每个Web服务才能在Tomcat上运行(我可能错过了一些增强功能)。

+0

感谢您的回答。部署工件是否会生成容器的一个功能,或者是否可以通过其他WS引擎jar2(如axis2或metro)扩展它(如果我放入\ lib中的那些jar中,那么注释类在部署时是自动进程? -Narahari – savithari

+0

只要它们与JAX-WS API兼容,工件生成就应该工作。前段时间,我使用WebSphere命令行工具生成了atrifacts并部署在Tomcat上... – home

0

取决于您如何部署它,但我认为您假设Tomcat的工作方式与完整的Java EE服务器相似,但事实并非如此。

如果你把罐子轴,并把它作为自己的Web应用程序,它应该工作(见here

我不知道Tomcat的会做任何事情都具有@WebService批注,因为它不是一个完整的Java EE服务器。见here,虽然在Tomcat 6,而不是Tomcat的7

参见this这使我相信它实力支持它,但它看起来像它的仍然使用Metro。

0

我想我以前见过类似的东西(即网络服务未在web.xml文件中列出)。 WEB-INFMETA-INF中是否有任何其他XML文件被称为ibm-something-something.xml或类似?从内存中,这是我在Rational Application Developer中开发并部署到WAS 7时的信息所在。