package cn.it.ws.cxf.a;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService(serviceName="languageManager")
public interface LanduageService {
@WebResult(name="language") String getLanguage(@WebParam(name="position") int position);
}
package cn.it.ws.cxf.a;
import org.apache.cxf.frontend.ServerFactoryBean;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
/**
* 开发语言排行描述服务
* @author wangzhiwei
*
*/
public class LanduageServiceImpl implements LanduageService {
/* (non-Javadoc)
* @see cn.it.ws.cxf.a.LanduageService#getLanguage(int)
*/
@Override
public String getLanguage(int position) {
String language=null;
switch (position) {
case 1:
language="java";
break;
case 2:
language="C";
break;
case 3:
language="Objective-C";
break;
case 4:
language="C#";
break;
default:
break;
}
return language;
}
/**
* 通过cxf框架发布webservice
* 1.ServerFactoryBean
* - 不设置注解也可以发布webservice服务,不支持注解
* -不支持拦截器的添加
* 2.JaxWsServerFactoryBean
* -支持注解
* -可以添加拦截器
* 3.webservice访问步骤:
* 1.检测本地代理描述的wsdl是否与服务端的wsdl一致,俗称为握手
* 2.通过soap协议实现通信,采用的是post请求,数据封装在满足soap规约的xml中
* 3.返回数据同样采用的是soap通信,数据封装在满足soap规约的xml中
*/
/* public static void main(String[] args) {
LanduageService landuageService = new LanduageServiceImpl();
ServerFactoryBean bean = new ServerFactoryBean();
//Endpoint:地址
bean.setAddress("http://127.0.0.1:9999/ws/cxf/languageService");
bean.setServiceClass(LanduageService.class);//对外提供服务的业务类或接口
bean.setServiceBean(landuageService);//服务的实现bean
bean.create();//创建,发布webservice
System.out.println("wsdl地址:http://127.0.0.1:9999/ws/cxf/languageService?WSDL");
}*/
public static void main(String[] args) {
LanduageService landuageService = new LanduageServiceImpl();
JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();
//Endpoint:地址
bean.setAddress("http://127.0.0.1:9999/ws/cxf/languageService");
bean.setServiceClass(LanduageService.class);//对外提供服务的业务类或接口
bean.setServiceBean(landuageService);//服务的实现bean
//添加输入拦截器:输入显示日志信息的拦截器
bean.getInInterceptors().add(new LoggingInInterceptor());
//添加输出拦截器:输出显示日志信息的拦截器
bean.getInInterceptors().add(new LoggingOutInterceptor());
bean.create();//创建,发布webservice
System.out.println("wsdl地址:http://127.0.0.1:9999/ws/cxf/languageService?WSDL");
}
}
package cn.it.ws.cxf.a;
public class Test {
/**
* 测试有CXF框架发布的webservice服务
* @param args
*/
public static void main(String[] args) {
LanguageManager ws = new LanguageManager();
LanduageService landuageServicePort = ws.getLanduageServicePort();
System.out.println(landuageServicePort.getLanguage(1));
}
}