大家好,又见面了,我是你们的朋友全栈君。
两个工程 分别部署在两台电脑上:webservice_client 客户端 webservice_server:服务器端
先说服务器 导入jar包
改写xml文件:
<servlet> <servlet-name>cxf</servlet-name> <servlet-class>com.rainspnsor.webservice.CXFNonSpringServiceImpl</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
然后创建类:
1 util中:先写个实体
package com.rainspnsor.util;
public class SysRequest {
/** * 请求的文本内容 */ private String reqText;
public String getReqText() { return reqText; }
public void setReqText(String reqText) { this.reqText = reqText; }
}
2再写个接口:
package com.rainspnsor.util;
public interface IHelloService {
/** * 发送信息 * @param sysRequest */ public void sendMsg(SysRequest sysRequest); public String getRespons(); public String getString(); }
3 写接口的实现类:
package com.rainspnsor.util;
public class HelloServiceImpl implements IHelloService {
public void sendMsg(SysRequest sysRequest) { System.out.println(“发送的信息为:” sysRequest.getReqText()); System.out.println(“=============”); }
public String getRespons() { System.out.println(“看看能接受到么”); return “看看能接受到么”; }
public String getString() {
return “999999”; }
}
4 CXF 类的配置:
package com.rainspnsor.webservice;
import javax.servlet.ServletConfig;
import org.apache.cxf.Bus; import org.apache.cxf.BusFactory; import org.apache.cxf.frontend.ServerFactoryBean; import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
import com.rainspnsor.util.HelloServiceImpl; import com.rainspnsor.util.IHelloService;
public class CXFNonSpringServiceImpl extends CXFNonSpringServlet{
private static final long serialVersionUID = 1L;
@Override protected void loadBus(ServletConfig sc) { super.loadBus(sc); //构建并设置了传输对象 Bus bus = getBus(); BusFactory.setDefaultBus(bus); ServerFactoryBean serverFB = new ServerFactoryBean(); //设置webservice对应的接口 serverFB.setServiceClass(IHelloService.class); //设置服务请求地址 serverFB.setAddress(“/hello”); //设置服务的实现 serverFB.setServiceBean(new HelloServiceImpl()); //通过工厂创建服务 serverFB.create(); } }
服务器配置搞定了!
然后是客户端 一个Java工程
1 还是建实体 :
package com.rainsponsor.util;
public class SysRequest {
/** * 请求的文本内容 */ private String reqText;
public String getReqText() { return reqText; }
public void setReqText(String reqText) { this.reqText = reqText; }
}
2 配置接口 !!!接口一定要和服务器端的接口一致
package com.rainsponsor.util;
public interface IHelloService {
/** * 发送信息 * @param sysRequest */ public void sendMsg(SysRequest sysRequest); public String getRespons(); public String getString(); }
3 在客户端中写信息:
package com.rainsponsor.client;
import org.apache.cxf.frontend.ClientProxyFactoryBean;
import com.rainsponsor.util.IHelloService; import com.rainsponsor.util.SysRequest;
public class WebserviceTestUtils {
/** * @param args */ public static void main(String[] args) { SysRequest sysRequest = new SysRequest(); sysRequest.setReqText(“RP省架构订单,望审核!”); ClientProxyFactoryBean factory = new ClientProxyFactoryBean(); factory.setAddress(“http://192.168.0.123:8080/webservice_server/services/he”); IHelloService helloService = factory.create(IHelloService.class); // helloService.sendMsg(sysRequest); String response = helloService.getString(); System.out.println(response); }
}
最后 服务器必须运行
在客户端中运行方法 在服务器就会显示 !
webservice 中 必须记住的几样
1 SOAP
即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
2 WSDL
Web Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
3 额。。。3是什么我给忘了 以后补充
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162649.html原文链接:https://javaforall.cn