使用JAX-WS、axis2创建webservice服务端

一、使用jdk自带的JAX-WS创建webservice服务端

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService(
        // 必须指定命名空间
        targetNamespace = "http://com.test"
)
public class Webservice {

    @WebMethod
    public String say(String xml) {
        return "返回值";
    }

    public static void main(String[] args) {
        // 注意不要用正在使用的端口号,并且要以"/"结尾
        String address = "http://localhost:8080/";
        // 运行main方法,发布服务端
        Endpoint.publish(address, new Webservice());
    }
}

也可以用spring代理发布服务端:dispatch-servlet.xml中加上

<bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter">
    <property name="baseAddress" value="http://localhost:8081/"></property>
</bean>

jax-ws发布服务端是绑定端口的,所以使用 locahost:8080/?wsdl 即能访问。

缺点是一个端口只能发布一个webservice服务类

 

二、使用axis2发布webservice

axis2版本:1.7.9

1、引入axis2依赖的jar包

如果使用maven,则依赖如下(因为axis2-adb依赖axis2-kernel,所有会自动引入,可省略)

<dependency>
  <groupId>org.apache.axis2</groupId>
  <artifactId>axis2-adb</artifactId>
  <version>1.7.9</version>
</dependency>
<dependency>
  <groupId>org.apache.axis2</groupId>
  <artifactId>axis2-transport-http</artifactId>
  <version>1.7.9</version>
</dependency>
<dependency>
  <groupId>org.apache.axis2</groupId>
  <artifactId>axis2-transport-local</artifactId>
  <version>1.7.9</version>
</dependency>

如果使用jar,则引入如下jar包:

 

2、创建services.xml

在WEB-INF文件夹下创建文件如下:services - XXX(任意文件名)- META-INF - services.xml

axis2会自动寻找WEB-INF下的services目录,再下下层目录的META-INF目录中的services.xml。

注意:此为axis2要求的固定结构,必须3层目录,否则读取不到services.xml

比如我的:

 

services.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<service name="Axis2Ws(定义Webservice服务名称为Axis2Ws)" scope="application">
    <description>Axis2Ws服务说明</description>
    <!-- 定义默认消息接收方式:rpc(远程方法调用) -->
    <messageReceivers>
        <messageReceiver
                mep="http://www.w3.org/ns/wsdl/in-only"
                class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
        <messageReceiver
                mep="http://www.w3.org/ns/wsdl/in-out"
                class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>
    <!-- 指定服务类,发布该类的所有方法,并且应用messageReceivers中定义的消息接收方式 -->
    <parameter name="ServiceClass">Webservice类全名(一个普通的java类即可)</parameter>
</service>

(service标签上scope属性是用来定义生命周期的)

如果同时发布多个webservice,可以在service标签外加上serviceGroup如下

<serviceGroup>
    <service name="service1">
        ...
    </service>
    <service name="service2">
        ...
    </service>
</serviceGroup>

3、配置axisServlet映射

在web.xml中加上servlet映射

<servlet>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <!-- 接受/services请求url -->
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>

至此axis2服务端配置全部完成,启动web程序,使用如下地址访问wsdl

http://localhost:端口/项目名称/services/Axis2Ws?wsdl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值