扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Axis Web 服务的构建过程与 J2EE 1.4 Web 服务不同,因为 Axis 具有自己的部署描述符。Axis Web 服务运行时需要 deploy.wsdd 文件提供的信息,以确定服务端点的名称和将其作为 Web 服务发布的方式。deploy.wsdd 文件将发送到 Axis 服务器,Axis 服务器将利用此信息对 Web 服务进行自检,并创建 Web 服务运行时所需的信息。注意:上述过程并不符合 J2EE 1.4 (部署构件),但符合 SOAP 1.1,因此 Axis Web 服务将能够与任何 Web 服务客户机进行互操作。
要构建 Axis Web 服务部署描述符,可以手动进行,也可以使用 Axis WSDL2Java Ant 任务来处理 Web 服务的 WSDL。在我们的示例中,由于我们决定使用 Web 服务端点的接口,因此没有 WSDL 文件。幸运的是,Axis 还提供了一个 Ant 任务来处理接口并输出 WSDL 文件。因此,Axis 构建过程包含两个步骤,如下所述:
构建了 Axis Web 服务后,必须告知 Web 应用程序容器要部署的服务以及如何进行部署,以便进行部署。这是通过将 deploy.wsdd 文件传递给部署 Web 服务的 Axis 管理员任务来完成的。这意味着,在 Web 容器启动后,Axis Web 服务需要进行部署 Web 服务的步骤。有关详细信息,请参见 Tomcat 上的 Axis 部署部分。
部署过程的描述
创建了所需的全部 Web 服务部署描述符后,最后一步是在每个目标平台上部署应用程序。我们将说明为了部署 Web 服务而需要在每个目标 Web 应用程序平台上进行的最后步骤。
IBM WebSphere 和 JBoss 4.0.4
IBM WebSphere 和 JBoss 4.0 均符合 J2EE 1.4,可以使用 Java Web Services Developer Pack (JWSDP v1.5) 或类似工具来生成 JAX-RPC Web 服务构件。唯一还没有为部署生成的 Web 服务构件是 webservices.xml 文件,该文件描述如何将所有组件组合到一起。
在 JBoss 4.0.4 上部署
要在 JBoss 上部署 Web 服务,必须进行以下步骤:(请注意,我们必须使用 JBoss 4.0.4,因为在 JBoss 的早期版本上部署数组类型会出现问题。)
清单 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> |
清单 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> |
在 IBM WebSphere 上部署
IBM WebSphere Web 服务的构建过程与 J2EE 1.4 Web 服务类似,唯一不同的是使用了 WebSphere 特定的工具来生成所需的部署描述符(J2EE 1.4 标准 + WebSphere 特定)。要构建 WebSphere Web 服务部署描述符,您可以手动进行,也可以使用 WSDL2Java 任务来处理 Web 服务的 WSDL。在我们的示例中,由于我们决定使用 Web 服务端点的接口,因此没有 WSDL 文件。因此,WebSphere 构建过程包含两个步骤,如下所述:
通过完成上述任务构建了 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 服务,需要执行以下步骤:
清单 5. web.xml 中的 Axis 引擎的 Servlet 声明
<!-- AXIS servlet definition --> <servlet-mapping> <servlet-mapping> |
BEA WebLogic
BEA WebLogic 商业 Web 服务容器在 8.1 及更早版本中使用自定义部署描述符。它还使用标准 JAX-RPC 描述符(可以通过使用符合 JSR-181 的注释生成)。BEA 将 JSR-181 引入了 Java Community Process。根据 WebLogic 9.x 开发者指南,WebLogic 平台的建议部署流程采用 Web Services MetaData(下面描述的 JSR-181)来标记用于实现 Web 服务的 Java 文件、使用 JDK 5.0(用于提供注释支持)编译带注释的文件,以及使用 WebLogic JSR-181 处理器来处理最后所得到的类文件。这将产生符合 J2EE 1.4 规范的其他 Web 服务构件。WebLogic 提供了称为 jwsc 的 Ant 任务来执行最后一个操作。运行了 jwsc 任务后,就可以将 Web 服务部署描述符打包成 war 文件,以进行部署。
JSR-181 简化 Web 服务开发和部署
前面讨论的观点具有双重意思:
在说明 JSR-181 在简化 Web 服务部署方面的好处时,我们将重点讨论这两个目标中的后者。
JSR-181 是由 BEA Systems, Inc. 引入 Java Community Process (JCP) 的,用于简化使用 Java 平台开发和部署 Web 服务的过程。JSR-181 中描述的规范依赖于 J2SE 5.0 的功能来对描述 Web 服务实现的 Web 服务元数据进行注释。通过在源代码中使用一些简单的 Web 服务注释,Web 容器将能够在无需满足任何其他开发要求的情况下发布 Web 服务。
如规范中所述,JSR-181 所涉及的范围如下:
此规范的总体目标是使 Java Web 服务简单且易于部署,以提供最常见的 Web 服务功能。此规范并未定义 Web 容器必须执行何种操作来部署 Web 服务,从而使得所得到的 WSDL(Web 服务契约)跨 Web 容器保持一致且符合开发人员的设想。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者