1.导入CXF的包,不知道最小包的话,就将所有的lib下的包导入即可。
2.编写webservice接口。
package com.web.service.inter;
public interface IHelloCXF {
public String sayHello(String one);
}
3.编写webservcie接口的实现类。
package com.web.service.imp;
import com.web.service.inter.IHelloCXF;
public class HelloCXF implements IHelloCXF{
@Override
public String sayHello(String one) {
// TODO Auto-generated method stub
System.out.println("hello "+one +" by CXF webservice");
return "only post";
}
}
4.编写servlet来发布webservcie
package com.web.service.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.annotation.WebServlet;
import org.apache.cxf.Bus;
import org.apache.cxf.frontend.ServerFactoryBean;
import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
import com.web.service.imp.HelloCXF;
import com.web.service.inter.IHelloCXF;
@WebServlet("/webservice/*")
public class HelloWebServiceServlet extends CXFNonSpringServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void loadBus(ServletConfig sc) {
// TODO Auto-generated method stub
super.loadBus(sc);
Bus bus = getBus();
ServerFactoryBean sfb = new ServerFactoryBean();
sfb.setBus(bus);
sfb.setServiceClass(IHelloCXF.class);
sfb.setAddress("/helloCXF");
sfb.setServiceBean(new HelloCXF());
sfb.create();
}
}
5,运行web应用后,访问http://localhost:8080/MgWebServiceCXF/webservice/?wsdl,如果出现下图则说明webservcie发布成功。
6.编写客户端调用该webservice.
package com.test;
import org.apache.cxf.frontend.ClientProxyFactoryBean;
import org.junit.Test;
import com.web.service.inter.IHelloCXF;
public class CXFClientTest {
@Test
public void test1(){
ClientProxyFactoryBean cpfb = new ClientProxyFactoryBean();
cpfb.setServiceClass(IHelloCXF.class);
cpfb.setAddress("http://127.0.0.1:8080/MgWebServiceCXF/webservice/helloCXF");
IHelloCXF ihcxf = (IHelloCXF) cpfb.create();
System.out.println(ihcxf.sayHello("meigang"));
}
}
运行结果:
客户端:
信息: Creating Service {http://inter.service.web.com/}IHelloCXF from class com.web.service.inter.IHelloCXF
only post
服务端:
信息: Setting the server's publish address to be /helloCXF
hello meigang by CXF webservice
?