Apache cxf rpc demo

      RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

下面是一个cxf rpc的demo

服务端:

1、创建HelloWorld接口类

package com.mms.webservice;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;

@WebService
@SOAPBinding(style=Style.RPC, use=Use.LITERAL)
public interface HelloWorld {
public String sayHi(String name);
}

2、创建HelloWorld实现类

package com.mms.webservice;


import javax.jws.WebService;

@WebService(endpointInterface="com.mms.webservice.HelloWorld",
serviceName="HelloWorld")
public class HelloWorldImpl implements HelloWorld {

public String sayHi(String name) {
return "Hello " + name;
}

}

3、创建service

package com.server;

import javax.xml.ws.Endpoint;

import com.mms.webservice.HelloWorld;
import com.mms.webservice.HelloWorldImpl;

public class RPCService {

public static void main(String[] args) {

System.out.println("web service start");
HelloWorld helloWorld=new HelloWorldImpl();
String address = "http://localhost:8080/service/helloWorld";
Endpoint.publish(address, helloWorld);

System.out.println("web service end");
}

启动 RPCService 之后在浏览器中输入http://localhost:8080/service/helloWorld?wsdl


这个代表rcp的服务已经启动成功

客户端:

4、创建客户端服务类

package com.client;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;

import com.mms.webservice.HelloWorld;

public class RPCClient {

private static final QName SERVICE_NAME = new QName("http://webservice.mms.com/", "HelloWorld");
private static final QName PORT_NAME = new QName("http://webservice.mms.com/", "HelloWorldPort");

private RPCClient() {

}

public static void main(String args[]) throws Exception {

Service service = Service.create(SERVICE_NAME);
// Endpoint Address
String endpointAddress = "http://localhost:8080/service/helloWorld";

// Add a port to the Service
service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);

HelloWorld hw = service.getPort(HelloWorld.class);
System.out.println(hw.sayHi("Ares"));

}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值