java部署web service的方式

摘要:
顺便说一下,不执行AdminClient工具来部署Web服务是可以的。另一种方法是直接编辑服务器配置。wsdd文件,然后重新启动web服务器。
  • 部署web service的方式一般有两种:

1. 编写java源文件,将文件的java后缀改为jws,然后部署到webapps/axis目录下,axia引擎可以直接执行源文件中定义的java方法为web service;另外,要让你的web应用服务器识别jws文件需要确定已在web.xml中配置servlet(如果你依照本文方法采用拷贝axis目录为工作起点的话,可以不考虑这步):

<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-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>
2. 编写web service 部署描述文件(wsdd)。这种方法适用与手头没有java源文件或只需要发布java类中某些特定方法为web service的情况,而且还可以通过在wsdd文件中配置序列化、反序列化器,扩展SOAP定义的基本数据类型,使web service支持复杂数据类型、解决异构平台web service交互问题。可见,此种方法较jws方法更强大、可控。

具体过程可归结为如下两步:
1). 部署classes和jar文件
2). 通知axisEngine加载新服务

step1:

 在WEB-INF/classes目录下放置已编译的java class文件
 如果java代码已编译为jar文件,可以直接放到WEB-INF/lib下
step2:

编写deploy.wsdd文件,可以参考axis压缩包种samples\stock目录下的例子。下面是一个最简单的范例:

<deployment name="MyService1" xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <service name="MyService1" provider="java:RPC">
  <parameter name="className" value="MyService1"/>
  <parameter name="allowedMethods" value="*"/>
 </service>
</deployment>

deploy.wsdd用来发布web service,aixs通常会将发布的服务(除jws文件定义的)保存到全局配置文件WEB-INF/server-config.wsdd中

执行java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd

定义AXISCLASSPATH环境变量,打开一个新的命令提示符窗口,输入下列命令(先定义环境变量,才能执行上面命令):

set AXIS_HOME=c:\axis
set AXIS_LIB=%AXIS_HOME%\lib
set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;%AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar

Trouble shooting:

1. 以上设置环境变量的命令如果直接拷贝本文给出的到你本地执行,注意你本地文件commons-discovery.jar和commons-logging.jar是否有版本号,如果有,以上命令需要做相应修改;

2. axis建议的XML parser为Xerces,环境变量给出的也使用这个,而不是java默认的Crimson parser,所以你可能需要到Xerces站点下载此组件,拷贝到WEB-INF/lib下;

3. 执行以上命令要先确保Tomcat已启动,否则会出现Connection refused错误。

4. 笔者lib目录下有的jar包为activation.jar axis.jar commons-discovery.jar commons-logging.jar jaxrpc.jar log4j-1.2.9.jar mail.jar NetComponents.jar portal-client.jar saaj.jar wsdl4j.jar xercesImpl.jar xml-apis.jar,共13个,可以对比你是否缺少,否则可能出现java.lang.NoClassDefFoundError错误。


顺便提一下,不执行AdminClient工具部署web service这步也行,替代的方法是直接编辑server-config.wsdd文件,然后重新启动web服务器。

  • 取消已发布的web service:

编写undeploy.wsdd文件,内容如下

<undeployment xmlns="http://xml.apache.org/axis/wsdd/">  

      <service name="MyService1"/>  

</undeployment> 

 执行如下命令

 java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/AdminService undeploy.wsdd

免责声明:文章转载自《java部署web service的方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python自动化之pytest框架使用详解WkHtmlToPdf 生成 PDF下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

九、网关(Gateway)

上一代网关zuul 1.X:https://github.com/Netflix/zuul/wiki 当前网关gateway:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/ 一、概述简介   Gateway是在...

直接下载jdk压缩包方式安装

分为下面5个步骤 1.官网下载JDK 2.检查是否安装jdk,解压缩,放到指定目录 3.配置环境变量 4.设置系统默认JDK 5. 测试jdk 1.官网下载JDK    地址:http://www.oracle.com/technetwork/articles/javase/index-jsp-138363.html 选择相应的 .gz包下载 2. 解压...

SVN 服务器端安装过程

1、安装软件版本: VisualSVN-Server-2.1.5.msi 右击安装软件,单机“安装”   2、单击【Next】 选择“I accept the terms in the License Agreement”,然后单击【Next】   3、这个界面是选择安装的组件,选择第一个“VisualSVN Server and Managem...

阿里的druid 监控

Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。 Druid支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。  Druid针对Oracle和MySql做了特别优化,比如Ora...

Servlet 运行原理

一:servlet定义 Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序。 二:简单servlet实例 //导入所需的包 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class FirstServl...

验证码实现(google)

1.引入jar包 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </d...