一天之中,用了各种方式生成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)的更多相关文章

  1. java动态获取WebService的两种方式(复杂参数类型)

    java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...

  2. WebService的两种方式Soap和Rest比较

    我的读后感:由于第一次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供方式时,更加疑惑.如google map api采用了AJAX方式,通过javascript ...

  3. WebService的两种方式SOAP和REST比较 (转)

    我的读后感:由于第一次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供方式时,更加疑惑.如google map api采用了AJAX方式,通过javascript ...

  4. cxf构建webservice的两种方式

    一.简介 对于基于soap传输协议的webservice有两种开发模式,代码优先和契约优先的模式.代码优先的模式是通过编写服务器端的代码,使用代码生成wsdl:契约优先模式首先编写wsdl,再通过ws ...

  5. webservice的两种方式SOAP和REST的通俗理解

    Webservice代表所有基于web的服务,包含两种方式SOAP和REST 以SOAP为例: 一个RPC call 就是把一个XML文档post到某个URL下,这个xml文档里写明我要调用的函数名和 ...

  6. 【转】【WCF】WCF中客户端生成代理的两种方式

    WCF程序中客户端要生成代理才能调用服务,在客户端生成代理有多种方式,如用ChannelFactory和添加服务引用等.下面就分别来介绍下这两种生成代理的方式. 使用ChannelFactory 使用 ...

  7. 利用"SQL"语句自动生成序号的两种方式

    1.首先,我们来介绍第一种方式: ◆查询的SQL语句如下: select row_number() over (order by name) as rowid, sysobjects.[name] f ...

  8. 利用"SQL"语句自动生成序号的两种方式

    1.首先,我们来介绍第一种方式: ◆查询的SQL语句如下: select row_number() over (order by name) as rowid, sysobjects.[id] fro ...

  9. JS调用webservice的两种方式

    协议肯定是使用http协议,因为soap协议本身也是基于http协议.期中第二种方式:只有webservice3.5以后版本才可以成功 第一种方式:构造soap格式的body,注意加粗的黄色标识,比如 ...

随机推荐

  1. websocket之四:WebSocket 的鉴权授权方案

    引子 WebSocket 是个好东西,为我们提供了便捷且实时的通讯能力.然而,对于 WebSocket 客户端的鉴权,协议的 RFC 是这么说的: This protocol doesn’t pres ...

  2. ThinkPHP实现事务回滚示例代码

    ThinkPHP的事务回滚示例如下: ? 1 2 3 4 5 6 7 8 9 10 $m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->sta ...

  3. 客户端调用wcf服务,如何提高调用性能

    IO调用服务 1.使用using(每次自动释放) ; i < ; i++) { var watch = new Stopwatch(); watch.Start(); using (var cl ...

  4. js实现的快速排序

    快速排序是一种平均性能非常优秀的排序算法,在很多场合都会应用到他. 了解快速排序于对开放高效率的软件有很重要的作用. 但是有不少的书本讲得并不是很清楚,而且不同的教材的实现方式也不尽相同, 我这里将最 ...

  5. Loadrunner11在新建Microsoft Word 报告时提示指定的转换无效

    HP Loadrunner11中文教程的学习基本已经结束,最后困扰我的就是这个在创建Microsoft Word 报告时不停的提示“指定的转换无效”的问题.在网上搜索了好长时间,好多朋友回答说没有生成 ...

  6. django2.0表的ORM字段类型和展示

    django2.0表的ORM字段类型和展示 思路整理 今天想给博客的文章添加增加一个分类字段 但是不知道这种后台字段生成的字段,样式怎么处理 后来找到了,就是在定义模型的字段定义的时候 决定样式 mo ...

  7. windows下测试flask的例子tuorial报错flask KeyError: 'DATABASE'

    windows下测试flask的例子tuorial报错flask KeyError: 'DATABASE' flask KeyError: 'DATABASE' 提示是 变量 database错误 由 ...

  8. oracle ROW_NUMBER用法

    Oracle中row_number().rank().dense_rank() 的区别 row_number的用途非常广泛,排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复 使 ...

  9. 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 ...

  10. ajax传递数组及后台接收

    ajax传递的是{"items":arr},其中arr=[]; 在后台String[] items=req.getParameterValues("items" ...