朋友们,我有一个在WebSphere 7.0中开发的JAXWS Webservice。
我有一个在WebSphere 7.0中开发的JAXWS网络服务。它在那里工作。Websphere中的栈是Axis2.0。
我写了一个POJO Java类,用@WebService注解,然后我做了一个wsgen来生成必要的工件,并创建了战争文件。
隐含的问题是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 jars 复制到 WEB-INF/lib 文件夹时。
当我重新启动Tomcat时,WebService不工作。
我很好奇的是,为什么Websphere7在启动时部署WebService,而不需要web.xml中的任何内容,但Tomcat拒绝这样做?
我错过了什么?
-纳拉哈里
我想我以前也见过类似的事情(即Web服务没有被列在WebSphere7.0中。web.xml
文件)。) 中还有其他的XML文件吗?WEB-INF
或 META-INF
叫做 ibm-something-something.xml
或类似的?根据记忆,我在Rational Application Developer中开发并部署到WAS 7时,信息就在那里。
WebSphere 会在classpath中搜索 @WebService
注解,不需要在启动时在 web.xml
这是根据Java EE 6规范。
由于Tomcat不完全支持Java EE 6(它只是一个servlet引擎),你必须定义一个触发器来让Axis2加载你的Web服务。据我所知,你必须将每个Web服务定义在 web.xml
能够在Tomcat上运行(我可能错过了一些增强功能)。