一天之中,用了各种方式生成webservice,就是为了node.js能和程序顺利通信。最终还是用axis2成功了。工作基本完成了,现在可以总结一下。

关于生成方式,推荐使用eclipse,比较方便,具体方式,上篇博文有转载,axis2和cxf2.x都是如此。注意:不是在项目上new一个webservice,是在你要作为webservice调用类的上面new一个。

具体代码,和测试代码,均通过测试的。

一、Axis2

服务端:

  1. package cn.wang;
  2.  
  3. public class EventForwarder {
  4. public String send(String message){
  5. return "hello word"+message;
  6. }
  7. }

客户端调用send方法的时候,这里就会返回给他们一个我们拼的字符串。

客户端:

  1. package cn.test;
  2.  
  3. import javax.xml.namespace.QName;
  4.  
  5. import org.apache.axis2.AxisFault;
  6. import org.apache.axis2.addressing.EndpointReference;
  7. import org.apache.axis2.client.Options;
  8. import org.apache.axis2.rpc.client.RPCServiceClient;
  9.  
  10. public class Client {
  11. public static void main(String[] args) throws AxisFault {
  12. RPCServiceClient serviceClient=new RPCServiceClient();
  13. Options options=serviceClient.getOptions();
  14. EndpointReference targetEPR=new EndpointReference("http://localhost:8080/WebService/services/HelloWorld"); //这个写自己生成的webservice地址
  15. options.setTo(targetEPR);
  16.  
  17. Object[] send=new Object[]{"zzz"};//the type of send
  18. Class[] recevied=new Class[]{String.class}; //the result type of receved
  19. QName qName=new QName("http://wang.cn","send");
  20. String result=serviceClient.invokeBlocking(qName, send, recevied)[0];
  21. System.out.println(result);
  22.  
  23. }
  24. }

二、Cxf 2.x

这种比较接近标准。

服务端:

接口:

  1. package com.gnivcode.spms.process.service;
  2.  
  3. import javax.jws.WebMethod;
  4. import javax.jws.WebParam;
  5. import javax.jws.WebResult;
  6. import javax.jws.WebService;
  7.  
  8. @WebService(targetNamespace="http://service.process.spms.gnivcode.com/")
  9. public interface EventForwarderInterface {
  10. @WebMethod(operationName = "send")
  11. @WebResult(name = "feedResult")
  12. public FeedResult send(@WebParam(name="nocPacket",targetNamespace="http://service.process.spms.gnivcode.com/")NocPacket nocPacket);
  13.  
  14. @WebMethod(operationName = "process")
  15. @WebResult(name = "feedResult")
  16. public FeedResult process(@WebParam(name="eventPacket",targetNamespace="http://service.process.spms.gnivcode.com/")EventPacket eventPacket);
  17. }
  1. package com.gnivcode.spms.process.service;
  2.  
  3. import javax.jws.WebMethod;
  4. import javax.jws.WebParam;
  5. import javax.jws.WebService;
  6.  
  7. @WebService(targetNamespace = "http://service.process.spms.gnivcode.com/", portName = "EventForwarderPort", serviceName = "EventForwarderService")
  8. public class EventForwarder implements EventForwarderInterface{
  9.  
  10. public FeedResult process(@WebParam(name = "eventPacket") EventPacket eventPacket){
  11. FeedResult feedResult=new FeedResult();
  12. feedResult.setResultDesc("hi,feedresult");
  13. return feedResult;
  14. }
  15.  
  16. public FeedResult send(@WebParam(name = "nocPacket") NocPacket nocPacket){
  17. FeedResult feedResult=new FeedResult();
  18. feedResult.setResultDesc("hi,feedresult");
  19. return feedResult;
  20. }
  21.  
  22. }

不使用接口也可以,和上面的一样,具体也忘记了。

客户端:

  1. package cn.wang.test;
  2.  
  3. import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
  4.  
  5. import com.gnivcode.spms.process.service.EventForwarderInterface;
  6. import com.gnivcode.spms.process.service.FeedResult;
  7. import com.gnivcode.spms.process.service.NocPacket;
  8.  
  9. public class Client {
  10.  
  11. public static void main(String[] args) {
  12. // TODO Auto-generated method stub
  13. JaxWsProxyFactoryBean factory=new JaxWsProxyFactoryBean();
  14. factory.setServiceClass(EventForwarderInterface.class);
  15. factory.setAddress("http://localhost:8080/MessageProcess/services/EventForwarderPort");
  16. EventForwarderInterface eventForwarderInterface=(EventForwarderInterface) factory.create();
  17. NocPacket nocPacket=new NocPacket();
  18. nocPacket.setGWName("noc_gwname");
  19. FeedResult feedResult=eventForwarderInterface.send(nocPacket);
  20. System.out.println("feedresult desc:"+feedResult.getResultDesc());
  21. System.out.println("feedresult code:"+feedResult.getResultCode());
  22. }
  23. }

生成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. PHP CRC16 校验码的算法怎么使用

    PHP CRC16 校验码的算法如何使用最近用到CRC16, 我现在就是要把 010301180001 算出CRC16的校验码,通过其他工具,可以得到 校验码是 05F1 最后完整的代码就是 0103 ...

  2. 第 0 课 Golang环境搭建

    1  下载 https://studygolang.com/dl  2   安装完成后,查看环境变量 GOBIN 存放可执行文件的目录的绝对路径. GOPATH 工作区目录的绝对路径.存放远源码的路径 ...

  3. 496. Next Greater Element I + 503. Next Greater Element II + 556. Next Greater Element III

    ▶ 给定一个数组与它的一个子列,对于数组中的一个元素,定义它右边第一个比他大的元素称为他的后继,求所给子列的后继构成的数组 ▶ 第 496 题,规定数组最后一个元素即数组最大元素的后继均为 -1 ● ...

  4. MYSQL, REDIS 等数据库的介绍

    MySQL: 数据库概述 MySql安装和基本管理 MySQl创建用户和授权 初始mysql语句 库的操作 表的操作 数据类型 数据类型(2) 完整性约束 外键的变种 三种关系 数据的增删改 单表查询 ...

  5. jeesite快速开发平台(一)----简介

    转自:https://blog.csdn.net/u011781521/article/details/54880170

  6. Cordova+Vue构建Hybrid APP简易实操

    当下APP市场,因为Native APP开发成本高,Web APP不稳定,混合开发APP大行其道,成为越来越多开发者的首选.Hybrid APP开发框架也比较多,Weex.Ionic.PhoneGap ...

  7. Spring启动时获取自定义注解的属性值

    1.自定义注解 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documen ...

  8. 使用API调用外部程序并监控程序状态

    Public Type SHELLEXECUTEINFO    cbSize As Long    fMask As Long    hwnd As Long    lpVerb As String  ...

  9. Maven 快速构建一个项目

    参考:http://www.spring4all.com/article/266 mvn archetype:generate -DgroupId=springboot -DartifactId=sp ...

  10. Using DirectShow------------------msdn

    Using DirectShow   This section contains the following topics: Simulating Graph Building with GraphE ...