科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道部署 Java Web 服务3

部署 Java Web 服务3

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在多个容器上部署 Java Web 服务可能会给开发人员带来一些问题。通过阅读本文,您可以了解若干部署描述符实现,并了解 Java 社区如何开始处理这个问题。

作者:James P. McCarthy 来源:IT专家网 2008年6月3日

关键字: 服务 web 部署 java

  • 评论
  • 分享微博
  • 分享邮件
在 JBoss 4.0.4 上部署

  要在 JBoss 上部署 Web 服务,必须进行以下步骤:(请注意,我们必须使用 JBoss 4.0.4,因为在 JBoss 的早期版本上部署数组类型会出现问题。)

  •   创建 webservices.xml 文件来描述我们的 J2EE 1.4 Web 服务部署,如下所示:

  清单 3. 示例 webservices.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<webservices xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd"
 version="1.1">
 <webservice-description>
  <webservice-description-name>StatsWS</webservice-description-name>
  <wsdl-file>WEB-INF/wsdl/StatsWS.wsdl</wsdl-file>
  <jaxrpc-mapping-file>WEB-INF/mapping.xml</jaxrpc-mapping-file>
  <port-component>
   <port-component-name>StatsWS</port-component-name>
   <wsdl-port>StatsServicePort</wsdl-port>
   <service-endpoint-interface>
    com.symmetrysolutions.statsws.StatsService
   </service-endpoint-interface>
   <service-impl-bean>
    <!—This servlet is declared in our web.xml file -->
    <servlet-link>StatsWS</servlet-link>
   </service-impl-bean>
  </port-component>
 </webservice-description>
</webservices>

  •   修改 web.xml 文件,以将 Web 服务端点声明为 Servlet,如下所示。请注意,正是在此处将 StatsWS 绑定到实现类。以下声明位于 web.xml 文件中,用于将实现绑定到 Servlet。

  清单 4. web.xml 中的 Web 服务 Servlet 引用

<!--  This name is declared in the webservices.xml file -->
<servlet>
    <servlet-name>StatsWS</servlet-name>
    <servlet-class>
        com.symmetrysolutions.statsws.StatsServiceImpl
    </servlet-class>
</servlet>

  •   构建并打包 Web 应用程序存档 (war),然后部署 Web 应用程序。
    在 IBM WebSphere 上部署

      IBM WebSphere Web 服务的构建过程与 J2EE 1.4 Web 服务类似,唯一不同的是使用了 WebSphere 特定的工具来生成所需的部署描述符(J2EE 1.4 标准 + WebSphere 特定)。要构建 WebSphere Web 服务部署描述符,您可以手动进行,也可以使用 WSDL2Java 任务来处理 Web 服务的 WSDL。在我们的示例中,由于我们决定使用 Web 服务端点的接口,因此没有 WSDL 文件。因此,WebSphere 构建过程包含两个步骤,如下所述:

    •   使用 Java2WSDL 任务从接口创建 WSDL 文件。
    •   从 WSDL 创建 Web 服务部署描述符。

      通过完成上述任务构建了 WebSphere Web 服务后,必须将所有生成的构件(序列化类和部署描述符)打包到 war 文件中,以便能在 WebSphere 服务器上部署。

      Tomcat 上的 Axis 部署

      部署 Axis Web 服务需要在 Web 容器内执行 Axis 特定的命令,以告知 Axis 引擎部署 Web 服务。这在生产应用程序中可能比较困难,因为要依赖手动步骤重新启动来部署 Web 服务。为了处理此问题,可以为 Web 应用程序发布的 Web 服务发出所有部署命令,然后将生成的 service-config.wsdd 文件嵌入到 war 文件中。Axis 引擎启动时(根据 web.xml 文件中的配置设置),它会查找 service-config.wsdd 文件,并自动重新部署 Web 服务。

      要部署 Axis Web 服务,需要执行以下步骤:

    •   修改 web.xml 文件,以包含 Axis 引擎的声明(Servlet 声明),如以下的清单 5 中所示。
    •   从 WSDL 创建 Web 服务部署描述符。

      清单 5. web.xml 中的 Axis 引擎的 Servlet 声明

     <!-- AXIS servlet definition -->
    <listener>
     <listener-class>
      org.apache.axis.transport.http.AxisHTTPSessionListener
     </listener-class>
    </listener>
    <!--  Axis servlet declaration -->
    <servlet>
     <servlet-name>AxisServlet</servlet-name>
      <display-name>Apache-Axis servlet</display-name>
      <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
     </servlet>
     
    <!-- Servlet mappings -->
       
    <!-- AXIS Definitions -->
    <servlet-mapping>
     <servlet-name>AxisServlet</servlet-name>
     <url-pattern>/servlet/AxisServlet</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
     <servlet-name>AxisServlet</servlet-name>
     <url-pattern>*.jws</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
     <servlet-name>AxisServlet</servlet-name>
     <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

    •   打包并部署 Web 应用程序。
    •   运行 Axis AdminService,以部署为 Web 服务生成的部署描述符。如果生成的配置未包含在 war 文件中,则必须在每次启动服务器时执行此步骤。
    •   或者,可以将 service-config.wsdd 重新打包回 war 文件中,以供将来进行部署。这样将避免在每次启动 Axis 引擎时执行前述步骤,但是,如果打包和部署所使用的 Axis 引擎版本不同,Axis 引擎可能无法正常工作。这只应该在部署时进行,以便在 Axis 引擎发生变化的情况下能生成新的 service-config.wsdd 部署描述符。
       
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章