利用spring、cxf编写并发布webservice

时间:2023-01-25 00:23:12

配置文件spring-wsServer.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:context="http://www.springframework.org/schema/context"
  xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!-- 需要注意两个地方,将CXF所需的配置文件import到Spring容器中,但所需的3个配置文件并不在工程里,而是在Spring容器初始化时自动创建,这里需要显示的将其import进来;
定义了一个Webservice的端点,其中id是其存放在Spring容器中的标识, implementor用于标注实现类, address提供服务的地址. -->
<!-- Import Apache CXF Bean Definition -->
<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"/> <bean id="wsCodeServiceImpl" class="com.cbt.webservice.impl.WsCodeServiceImpl"/> <!-- 通过Spring创建数据绑定的类-->
<bean id="aegisBean" class="org.apache.cxf.aegis.databinding.AegisDatabinding" /> <bean id="jaxWsServiceFactoryBean" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
<property name="wrapped" value="true" />
<property name="dataBinding" ref="aegisBean" />
</bean> <jaxws:endpoint id="wsCodeService"
implementor="#wsCodeServiceImpl" address="/codeWebService" >
<jaxws:serviceFactory>
<ref bean="jaxWsServiceFactoryBean" />
</jaxws:serviceFactory>
</jaxws:endpoint> </beans>

web.xml

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

java代码

  接口

package com.cbt.webservice;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService; @WebService
public interface WsCodeService { @WebResult(name="code")
public String getCodeByPrefix(@WebParam(name="codePrefix")String codePrefix);
}

  接口实现类

package com.cbt.webservice.impl;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import com.cbt.service.system.CodeService;
import com.cbt.webservice.WsCodeService; @WebService
public class WsCodeServiceImpl implements WsCodeService { @WebResult(name="code")
public String getCodeByPrefix(@WebParam(name="codePrefix")String codePrefix) {
//写你的实现功能的代码
} }

  启动项目后浏览器访问 http://localhost:8080/spm/ws/codeWebService
  说明:spm为你的项目名  ws为你在web.xml中配置的访问路径   codeWebService为你在配置文件中jaxwa:endpoint中的address

若出现类似下图,则发布成功

利用spring、cxf编写并发布webservice