朋友:
我有一个在WebSphere 7.0中开发的JAXWS Web服务。它在那里工作。 Websphere中的堆栈是Axis2.0
我写了一个POJO Java类,用@WebService注释注释然后我做了一个wsgen来生成必要的工件并创建war文件。
重要的是web.xml中没有任何servlet或者定义了侦听器。 查看plaincopy到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在启动时在没有任何entires的情况下在web.xml中部署WebService但是Tomcat拒绝这样做?
我错过了什么?
-Narahari
答案 0 :(得分:0)
WebSphere在启动期间在类路径中搜索@WebService
注释,没有必要在web.xml
中包含任何条目,这符合Java EE 6规范。
由于Tomcat不完全支持Java EE 6(它只是'servlet引擎'),因此必须定义一个触发器以使Axis2加载您的Web服务。据我所知,您必须在web.xml
中定义每个Web服务才能在Tomcat上运行(我可能错过了一些增强功能)。
答案 1 :(得分:0)
取决于你如何尝试部署它,但我认为你假设Tomcat的工作方式就像一个完整的Java EE服务器,它不是。
如果您使用轴jar并将其作为自己的Web应用程序,应该工作(请参阅here。
我不知道Tomcat会对@WebService注释做任何事情,因为不是完整的Java EE服务器。请参阅here,尽管这与Tomcat 6有关,而不是Tomcat 7。
另请参阅this,这让我相信可能支持它,但看起来它仍在使用Metro。
答案 2 :(得分:0)
我想我以前见过类似的事情(即网络服务没有在web.xml
文件中列出)。 WEB-INF
或META-INF
中是否有ibm-something-something.xml
或类似的其他XML文件?从内存开始,这就是我在Rational Application Developer中开发并部署到WAS 7时的信息。