【问题标题】:websphere 7.0 JAXWS webservice deployed in tomcat 7.0 not working部署在 tomcat 7.0 中的 websphere 7.0 JAXWS webservice 不工作
【发布时间】:2011-11-23 01:59:02
【问题描述】:

朋友:

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

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

重要的是 web.xml 中没有任何 servlet 或定义的侦听器。 将纯副本查看到剪贴板打印?

<?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 拒绝这样做?

我错过了什么?

-纳拉哈里

【问题讨论】:

    标签: java web-services jakarta-ee tomcat tomcat7


    【解决方案1】:

    取决于您尝试如何部署它,但我认为您假设 Tomcat 像一个完整的 Java EE 服务器一样工作,但事实并非如此。

    如果您使用轴 jar 并将其作为自己的网络应用程序,它应该工作(请参阅here

    我不知道 Tomcat 会用 @WebService 注释做任何事情,因为它不是一个完整的 Java EE 服务器。请参阅 here,虽然这是 Tomcat 6,而不是 Tomcat 7。

    另请参阅 this,这让我相信它可能支持它,但它看起来仍在使用 Metro。

    【讨论】:

      【解决方案2】:

      WebSphere 在启动时会在类路径中搜索@WebService 注解,web.xml 中不需要有任何条目,这是根据 Java EE 6 规范。

      由于 Tomcat 不完全支持 Java EE 6(它只是一个 servlet 引擎),您必须定义一个触发器来让 Axis2 加载您的 Web 服务。据我所知,您必须在 web.xml 中定义每个 Web 服务才能在 Tomcat 上运行(我可能错过了一些增强功能)。

      【讨论】:

      • 感谢您的回答。部署工件生成是容器的一个功能,还是可以通过其他 WS 引擎 jar(如axis2或metro aka)来增强,如果我将这些 jar 放入 \lib 中,那么注释类是部署时的自动进程? -Narahari
      • 工件生成应该可以工作,只要它们与 JAX-WS API 兼容。前段时间我使用 WebSphere 命令行工具生成了 atrifacts 并部署在 Tomcat 上...
      【解决方案3】:

      我想我以前见过类似的事情(即 Web 服务未在 web.xml 文件中列出)。 WEB-INFMETA-INF 中是否还有其他名为 ibm-something-something.xml 或类似的 XML 文件?记忆中,这就是我在 Rational Application Developer 中进行开发并部署到 WAS 7 时的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-18
        • 2016-12-31
        相关资源
        最近更新 更多