1、 WebService实现类:@WebService注解表示这个类发布为一个WebService服务。
package com.coshaho.learn.cxf; import javax.jws.WebService; /** * WebService实现类不继承接口,则所有WebService相关注解需要写在实现类中 * @author coshaho * */ @SuppressWarnings("restriction") @WebService(name="HelloWoldService") public class HelloWorldServiceImpl { public String sayHello(String username) { return "Hello " + username + "!"; } }
2、发布服务。
package com.coshaho.learn.cxf; import org.apache.cxf.endpoint.Server; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; public class CXFServer { public static void main(String[] args) { JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); // Web服务的地址 factoryBean.setAddress("http://localhost:8081/hello"); // Web服务对象调用接口 factoryBean.setServiceClass(HelloWorldServiceImpl.class); Server server = factoryBean.create(); server.start(); } }
3、WebService客户端模拟接口:CXF客户端接口参数名称(@WebParam),方法名称(@WebMethod),返回值名称(@WebResult)需要与WebService服务端实现类或接口保持一致。
package com.coshaho.learn.cxf; import javax.jws.WebService; /** * CXF客户端接口参数名称(@WebParam),方法名称(@WebMethod),返回值名称(@WebResult)需要与WebService服务端实现类或接口保持一致 * @author coshaho * */ @SuppressWarnings("restriction") @WebService public interface HelloWoldClientServiceI { public String sayHello(String userName); }
4、客户端调用WebService服务。
package com.coshaho.learn.cxf; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; public class CXFClient { public static void main(String[] args) { JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean(); //获取服务器端 factoryBean.setAddress("http://localhost:8081/hello"); //通过客户端的接口获取服务器端的接口 factoryBean.setServiceClass(HelloWoldClientServiceI.class); HelloWoldClientServiceI hello =(HelloWoldClientServiceI) factoryBean.create(); System.out.println(hello.sayHello("CXF")); } }
5、如果服务端实现类继承于一个接口,则可以在接口中写明WebService相关注解,实现类省略注解。
package com.coshaho.learn.cxf; import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; /** * WebService实现类可以继承WebService接口,所有WebService相关注解写在接口中 * @author coshaho * */ @SuppressWarnings("restriction") @WebService(name="HelloWoldService") public interface HelloWoldServiceI { @WebMethod(operationName="sayHelloWorld") @WebResult(name="result") public String sayHello(@WebParam(name="userName") String username); }
时间: 2024-09-29 21:27:27