生成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,注意加粗的黄色标识,比如 ...
随机推荐
- Hadoop Hive 中的排序 Order by ,Sort by ,Distribute by以及 Cluster By
order by order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规模较大时,需要较长的计算时间. set h ...
- 【POJ】3378 Crazy Thairs(树状数组+dp+高精)
题目 传送门:QWQ 分析 题意:给个数列,求有多少五元上升组 考虑简化一下问题:如果题目求二元上升组怎么做. 仿照一下逆序对,用树状数组维护一下就ok了. 三元怎么做呢? 把二元的拓展一位就可以了, ...
- 网页中显示pdf的方法
非常好的在网页中显示pdf的方法 今天有一需求,要在网页中显示pdf,于是立马开始搜索解决方案,无意中发现一个非常好的解决方法,详见http://blogs.adobe.com/pdfdevjunki ...
- Python单例模式实现方法
一 简介 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源 ...
- 小米笔记本pro CPU GPU 做科学计算的算力对比
小米笔记本pro:15.6寸,i7-8850,16G,256G,GPU:MX150 测试对象Caffe,MNIST训练 使用纯CPU训练: 1.耗时:11分58秒 2.功耗:35W 使用GPU训练: ...
- Windows环境下为PHP5.6安装redis扩展和memcached扩展
一.php安装redis扩展 1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本 2.根据PHP版本号,编译器版本号和CPU架构, 选择php_redis-2.2 ...
- Selenium Webdriver——使用reportng
ReportNG is a simple HTML reporting plug-in for the TestNG unit-testing framework. It is intended as ...
- MultipartFile 转换为File
选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 . MultipartFile multipartFile; File fil ...
- Apache Hive 安装文档
简介: Apache hive 是基于 Hadoop 的一个开源的数据仓库工具,可以将结构化的数据文件映射为一张数据库表, 并提供简单的sql查询功能,将 SQL 语句转换为 MapReduce 任务 ...
- xshell评估过期解决办法
1.登录网景官网的下载页面: https://www.netsarang.com/download/down_form.html?code=522 2.直接在页面中有红色*号的地方输入个人信息,lic ...