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)); } }