无spring框架发布CXF webservice

1、在web.xml添加

<!-- cxf配置 -->
  <servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>com.tjx.cxf.server.WebServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/ws/*</url-pattern>
  </servlet-mapping>
  <!-- cxf配置 -->


2、WebServlet添加cxf webservice接口映射

import javax.servlet.ServletConfig;

import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import org.apache.cxf.transport.servlet.CXFNonSpringServlet;

import com.tjx.cxf.service.WWMH_Service;
import com.tjx.<span style="font-family: Arial, Helvetica, sans-serif;">cxf.service.YSCMPService;</span>
import com.tjx.cxf.service.impl.WWMH_ServiceImpl;
import com.tjx.cxf.service.impl.YSCMPImpl;

public class WebServlet extends CXFNonSpringServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void loadBus(ServletConfig servletConfig) {
		super.loadBus(servletConfig);
		Bus bus = getBus();
		BusFactory.setDefaultBus(bus);
		YSCMPImpl _YSCMPImpl = new YSCMPImpl();// 实现类
		JaxWsServerFactoryBean  cmpFactoryBean = new JaxWsServerFactoryBean (); // server工厂
		cmpFactoryBean.setServiceClass(YSCMPService.class);// 接口类
		cmpFactoryBean.setAddress("/CMP"); // 服务请求路径
		cmpFactoryBean.setServiceBean(_YSCMPImpl);
		cmpFactoryBean.create();
		
		//扩展多个webservice
		WWMH_ServiceImpl _WWMH_ServiceImpl = new WWMH_ServiceImpl();// 实现类
		cmpFactoryBean = new JaxWsServerFactoryBean (); // server工厂
		cmpFactoryBean.setServiceClass(WWMH_Service.class);// 接口类
		cmpFactoryBean.setAddress("/WSHH"); // 服务请求路径
		cmpFactoryBean.setServiceBean(_WWMH_ServiceImpl);
		cmpFactoryBean.create();
	}
}

3、编写接口类

import javax.jws.WebParam;
import javax.jws.WebService;

@WebService( serviceName="XX")    //此处必须为serviceName,或则发布的服务名字会多一个Serivce 
public interface YSCMPService {
	public String GETZT(@WebParam(name = "zjhm") String zjhm);
}

4、编写实现类

public class YSCMPImpl implements YSCMPService{ 
	public String GETZT(String zjhm) {
		return "test"; 
	} 
}


之前碰到了  cxf webservice 生成wsdl方法参数名称为arg0问题 ,详见  :http://www.cnblogs.com/Gyoung/p/5489010.html。也可以看下面粘贴过来的。

cxf webservice 生成wsdl方法参数名称为arg0问题

在通过cxf生成webservice服务时,如果你是用ServerFactoryBean,那么在生成wsdl时,方法的参数名称会被自动命名为arg0,arg1...,如:

<xsd:complexType name="addPatientRegistry">
<xsd:sequence>
<xsd:element minOccurs="0" name="arg0" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="addPatientRegistryResponse" type="tns:addPatientRegistryResponse"/>

因为,java的反序列化没办法获取参数名称。

只能用JaxWsServerFactoryBean,但在在相应的接口上加注解@WebParam

@WebService
@BindingType(value = SOAPBinding.SOAP12HTTP_BINDING)
public interface HelloService {
    String hello(@WebParam(name="name")String name);
}

 HelloService hw = new HelloServiceImpl();
        JaxWsServerFactoryBean jwsFactory = new JaxWsServerFactoryBean();
        jwsFactory.setAddress("http://10.0.1.32:5679/hello");   //指定WebService的发布地址
        jwsFactory.setServiceClass(HelloService.class);//WebService对应的类型
        jwsFactory.setServiceBean(hw);//WebService对应的实现对象

        jwsFactory.create();

 



































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值