生成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,注意加粗的黄色标识,比如 ...
随机推荐
- PHP CRC16 校验码的算法怎么使用
PHP CRC16 校验码的算法如何使用最近用到CRC16, 我现在就是要把 010301180001 算出CRC16的校验码,通过其他工具,可以得到 校验码是 05F1 最后完整的代码就是 0103 ...
- 第 0 课 Golang环境搭建
1 下载 https://studygolang.com/dl 2 安装完成后,查看环境变量 GOBIN 存放可执行文件的目录的绝对路径. GOPATH 工作区目录的绝对路径.存放远源码的路径 ...
- 496. Next Greater Element I + 503. Next Greater Element II + 556. Next Greater Element III
▶ 给定一个数组与它的一个子列,对于数组中的一个元素,定义它右边第一个比他大的元素称为他的后继,求所给子列的后继构成的数组 ▶ 第 496 题,规定数组最后一个元素即数组最大元素的后继均为 -1 ● ...
- MYSQL, REDIS 等数据库的介绍
MySQL: 数据库概述 MySql安装和基本管理 MySQl创建用户和授权 初始mysql语句 库的操作 表的操作 数据类型 数据类型(2) 完整性约束 外键的变种 三种关系 数据的增删改 单表查询 ...
- jeesite快速开发平台(一)----简介
转自:https://blog.csdn.net/u011781521/article/details/54880170
- Cordova+Vue构建Hybrid APP简易实操
当下APP市场,因为Native APP开发成本高,Web APP不稳定,混合开发APP大行其道,成为越来越多开发者的首选.Hybrid APP开发框架也比较多,Weex.Ionic.PhoneGap ...
- Spring启动时获取自定义注解的属性值
1.自定义注解 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documen ...
- 使用API调用外部程序并监控程序状态
Public Type SHELLEXECUTEINFO cbSize As Long fMask As Long hwnd As Long lpVerb As String ...
- Maven 快速构建一个项目
参考:http://www.spring4all.com/article/266 mvn archetype:generate -DgroupId=springboot -DartifactId=sp ...
- Using DirectShow------------------msdn
Using DirectShow This section contains the following topics: Simulating Graph Building with GraphE ...