生成Webservice的两种方式(Axis2,CXf2.x)
一天之中,用了各种方式生成webservice,就是为了node.js能和程序顺利通信。最终还是用axis2成功了。工作基本完成了,现在可以总结一下。
关于生成方式,推荐使用eclipse,比较方便,具体方式,上篇博文有转载,axis2和cxf2.x都是如此。注意:不是在项目上new一个webservice,是在你要作为webservice调用类的上面new一个。
具体代码,和测试代码,均通过测试的。
一、Axis2
服务端:
package cn.wang;
public class EventForwarder {
public String send(String message){
return "hello word"+message;
}
}
客户端调用send方法的时候,这里就会返回给他们一个我们拼的字符串。
客户端:
package cn.test; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient; public class Client {
public static void main(String[] args) throws AxisFault {
RPCServiceClient serviceClient=new RPCServiceClient();
Options options=serviceClient.getOptions();
EndpointReference targetEPR=new EndpointReference("http://localhost:8080/WebService/services/HelloWorld"); //这个写自己生成的webservice地址
options.setTo(targetEPR); Object[] send=new Object[]{"zzz"};//the type of send
Class[] recevied=new Class[]{String.class}; //the result type of receved
QName qName=new QName("http://wang.cn","send");
String result=serviceClient.invokeBlocking(qName, send, recevied)[0];
System.out.println(result); }
}
二、Cxf 2.x
这种比较接近标准。
服务端:
接口:
package com.gnivcode.spms.process.service; import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService; @WebService(targetNamespace="http://service.process.spms.gnivcode.com/")
public interface EventForwarderInterface {
@WebMethod(operationName = "send")
@WebResult(name = "feedResult")
public FeedResult send(@WebParam(name="nocPacket",targetNamespace="http://service.process.spms.gnivcode.com/")NocPacket nocPacket); @WebMethod(operationName = "process")
@WebResult(name = "feedResult")
public FeedResult process(@WebParam(name="eventPacket",targetNamespace="http://service.process.spms.gnivcode.com/")EventPacket eventPacket);
}
package com.gnivcode.spms.process.service; import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService; @WebService(targetNamespace = "http://service.process.spms.gnivcode.com/", portName = "EventForwarderPort", serviceName = "EventForwarderService")
public class EventForwarder implements EventForwarderInterface{ public FeedResult process(@WebParam(name = "eventPacket") EventPacket eventPacket){
FeedResult feedResult=new FeedResult();
feedResult.setResultDesc("hi,feedresult");
return feedResult;
} public FeedResult send(@WebParam(name = "nocPacket") NocPacket nocPacket){
FeedResult feedResult=new FeedResult();
feedResult.setResultDesc("hi,feedresult");
return feedResult;
} }
不使用接口也可以,和上面的一样,具体也忘记了。
客户端:
package cn.wang.test; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.gnivcode.spms.process.service.EventForwarderInterface;
import com.gnivcode.spms.process.service.FeedResult;
import com.gnivcode.spms.process.service.NocPacket; public class Client { public static void main(String[] args) {
// TODO Auto-generated method stub
JaxWsProxyFactoryBean factory=new JaxWsProxyFactoryBean();
factory.setServiceClass(EventForwarderInterface.class);
factory.setAddress("http://localhost:8080/MessageProcess/services/EventForwarderPort");
EventForwarderInterface eventForwarderInterface=(EventForwarderInterface) factory.create();
NocPacket nocPacket=new NocPacket();
nocPacket.setGWName("noc_gwname");
FeedResult feedResult=eventForwarderInterface.send(nocPacket);
System.out.println("feedresult desc:"+feedResult.getResultDesc());
System.out.println("feedresult code:"+feedResult.getResultCode());
}
}
生成Webservice的两种方式(Axis2,CXf2.x)的更多相关文章
- java动态获取WebService的两种方式(复杂参数类型)
java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...
- WebService的两种方式Soap和Rest比较
我的读后感:由于第一次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供方式时,更加疑惑.如google map api采用了AJAX方式,通过javascript ...
- WebService的两种方式SOAP和REST比较 (转)
我的读后感:由于第一次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供方式时,更加疑惑.如google map api采用了AJAX方式,通过javascript ...
- cxf构建webservice的两种方式
一.简介 对于基于soap传输协议的webservice有两种开发模式,代码优先和契约优先的模式.代码优先的模式是通过编写服务器端的代码,使用代码生成wsdl:契约优先模式首先编写wsdl,再通过ws ...
- webservice的两种方式SOAP和REST的通俗理解
Webservice代表所有基于web的服务,包含两种方式SOAP和REST 以SOAP为例: 一个RPC call 就是把一个XML文档post到某个URL下,这个xml文档里写明我要调用的函数名和 ...
- 【转】【WCF】WCF中客户端生成代理的两种方式
WCF程序中客户端要生成代理才能调用服务,在客户端生成代理有多种方式,如用ChannelFactory和添加服务引用等.下面就分别来介绍下这两种生成代理的方式. 使用ChannelFactory 使用 ...
- 利用"SQL"语句自动生成序号的两种方式
1.首先,我们来介绍第一种方式: ◆查询的SQL语句如下: select row_number() over (order by name) as rowid, sysobjects.[name] f ...
- 利用"SQL"语句自动生成序号的两种方式
1.首先,我们来介绍第一种方式: ◆查询的SQL语句如下: select row_number() over (order by name) as rowid, sysobjects.[id] fro ...
- JS调用webservice的两种方式
协议肯定是使用http协议,因为soap协议本身也是基于http协议.期中第二种方式:只有webservice3.5以后版本才可以成功 第一种方式:构造soap格式的body,注意加粗的黄色标识,比如 ...
随机推荐
- websocket之四:WebSocket 的鉴权授权方案
引子 WebSocket 是个好东西,为我们提供了便捷且实时的通讯能力.然而,对于 WebSocket 客户端的鉴权,协议的 RFC 是这么说的: This protocol doesn’t pres ...
- ThinkPHP实现事务回滚示例代码
ThinkPHP的事务回滚示例如下: ? 1 2 3 4 5 6 7 8 9 10 $m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->sta ...
- 客户端调用wcf服务,如何提高调用性能
IO调用服务 1.使用using(每次自动释放) ; i < ; i++) { var watch = new Stopwatch(); watch.Start(); using (var cl ...
- js实现的快速排序
快速排序是一种平均性能非常优秀的排序算法,在很多场合都会应用到他. 了解快速排序于对开放高效率的软件有很重要的作用. 但是有不少的书本讲得并不是很清楚,而且不同的教材的实现方式也不尽相同, 我这里将最 ...
- Loadrunner11在新建Microsoft Word 报告时提示指定的转换无效
HP Loadrunner11中文教程的学习基本已经结束,最后困扰我的就是这个在创建Microsoft Word 报告时不停的提示“指定的转换无效”的问题.在网上搜索了好长时间,好多朋友回答说没有生成 ...
- django2.0表的ORM字段类型和展示
django2.0表的ORM字段类型和展示 思路整理 今天想给博客的文章添加增加一个分类字段 但是不知道这种后台字段生成的字段,样式怎么处理 后来找到了,就是在定义模型的字段定义的时候 决定样式 mo ...
- windows下测试flask的例子tuorial报错flask KeyError: 'DATABASE'
windows下测试flask的例子tuorial报错flask KeyError: 'DATABASE' flask KeyError: 'DATABASE' 提示是 变量 database错误 由 ...
- oracle ROW_NUMBER用法
Oracle中row_number().rank().dense_rank() 的区别 row_number的用途非常广泛,排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复 使 ...
- Display file information in the document window
[Display file information in the document window] The status bar is located at the bottom of every d ...
- ajax传递数组及后台接收
ajax传递的是{"items":arr},其中arr=[]; 在后台String[] items=req.getParameterValues("items" ...