java用SOAP方式发布WebService

本文详细介绍使用Apache CXF框架搭建WebService的过程,包括导入jar包、配置web.xml、创建application-webservice.xml,以及编写WebService接口和实现类。通过具体实例展示如何发布并测试WebService。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:导jar包

<!-- CXF -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.1</version>
</dependency>

第二步:在web.xml加上一下配置

  <!--webService配置-->
    <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/ws/*</url-pattern>
    </servlet-mapping>

第三步:创建application-webservice.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://cxf.apache.org/jaxws
	   http://cxf.apache.org/schemas/jaxws.xsd"
       default-autowire="byName">

       <import resource="classpath:META-INF/cxf/cxf.xml" />
       <!--<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />-->
       <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

       <jaxws:endpoint id="attendServiceWS"
                    implementor="com.hanvon.iface.web.ws.impl.AttendServiceImpl"
                    address="/attendService">
              <jaxws:properties>
                     <entry key="autoRewriteSoapAddress" value="true"/>
              </jaxws:properties>
       </jaxws:endpoint>
</beans>

第四步:编写webService类

接口:

package com.hanvon.iface.web.ws;

import javax.jws.WebParam;
import javax.jws.WebService;
import com.hanvon.iface.web.ws.utils.Point;

@WebService(targetNamespace = "kserver.hanvon.com")
public interface AttendService
{
    public Point deleteClassInfo(@WebParam(name = "transCode") String transCode);
}

实现类:

package com.hanvon.iface.web.ws.impl;

import com.hanvon.iface.web.ws.AttendService;

import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.WebServiceContext;
import com.hanvon.iface.web.ws.utils.Point;

@Component("attendService")
@WebService(endpointInterface = "com.hanvon.iface.web.ws.AttendService"
        ,targetNamespace = "kserver.hanvon.com")
public class AttendServiceImpl implements AttendService {

    @Resource
    private WebServiceContext context;

    @Override
    public Point deleteClassInfo(@WebParam(name="transCode")String transCode) {
        System.out.println("transCode:"+transCode);
        Point point = new Point();
        point.setCode("0");
        point.setMessage("同步成功!");
        return point;    
}

}

可以访问http://localhost:8080/ws/attendService?wsdl,即发布成功

注:返回xml数据工具类

package com.hanvon.iface.web.ws.utils;

public class Point {
    private String code;
    private String message;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

用soapUi测试返回报文如下:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:deleteClassInfoResponse xmlns:ns2="kserver.hanvon.com">
         <return>
            <code>0</code>
            <message>同步成功!</message>
         </return>
      </ns2:deleteClassInfoResponse>
   </soap:Body>
</soap:Envelope>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值