2019独角兽企业重金招聘Python工程师标准>>>

之前转的使用Pojo来发布webservice,使用有限制,不能发布带包的Pojo,所以找了使用services.xml发布项目的方式.

package service;public class MyService
{public String getHello(String name){return "您好 !" + name;}public void update(String data){System.out.println("<" + data + ">已经更新");}
}

解压axis2-1.6.2-war.zip解压得到axis2.war,在解压axis2.war,进入WEB-INF目录下,将con,lib,modules文件夹复制到工程路径下的WEB-INF下,新建一个services文件夹,在建一个名称文件为myservice(可任意取),在建一个META-INF文件夹,在MEAT-INF文件夹下创建services.xml;

配置与该类相应的services.xml;

<?xml version="1.0" encoding="UTF-8"?>
<service name="myService"><description>Web Service例子</description><parameter name="ServiceClass">service.MyService</parameter><operation name="getHello"><messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /></operation><operation name="update"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /></operation>
</service>

service name ="myService" 就是你请求的服务名:如我的工程名为axis2demo,请求路径为 http://localhost/axis2demo/services/myService?wsdl   parameter里面的是包+类名;operation 则是对应的方法名,若该方法有返回值,则可以设置 messageReceiver的方式为org.apache.axis2.rpc.receivers.RPCMessageReceiver; 没返回值的可以设置为org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver

如果有多个类的情况下

package service
public class MyService1
{public String getName()  { return " mr zhou";}
}

可以创建

<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup><service name="myService"><description>Web Service例子</description><parameter name="ServiceClass">service.MyService</parameter><operation name="getHello"><messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /></operation><operation name="update"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /></operation></service><service name="myService1"><description>Web Service例子</description><parameter name="ServiceClass">service.MyService1</parameter><operation name="getName"><messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /></operation></service>
</serviceGroup>

最后配置我们的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><display-name>axis2demo</display-name><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list><servlet><servlet-name>AxisServlet</servlet-name><servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping></web-app>

重起我们的服务,输入http://localhost/axis2demo/services/myService?wsdl 就ok啦,

若我们要取得执行的方法可以通过RCP方式调用在webservice发布的方法

package service;
import javax.xml.namespace.QName;import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;public class RPCClient {public static void main(String[] args) throws Exception {// 使用RPC方式调用WebServiceRPCServiceClient serviceClient = new RPCServiceClient();Options options = serviceClient.getOptions();// 指定调用WebService的URLEndpointReference targetEPR = new EndpointReference("http://localhost/axis2demo/services/myService");options.setTo(targetEPR);// 指定getName方法返回值的数据类型的Class对象Class[] classes = new Class[] { String.class };// 指定要调用的getName方法及WSDL文件的命名空间QName opAddEntry = new QName("http://service","getHello");Object[] opAddEntryArgs = new Object[] {"周顺得" };// 调用getGreeting方法并输出该方法的返回值System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0]);// 使用RPC方式调用WebServiceOptions options1 = serviceClient.getOptions();// 指定调用WebService的URLEndpointReference targetEPR1 = new EndpointReference("http://localhost/axis2demo/services/myService1");options1.setTo(targetEPR1);// 指定getName方法返回值的数据类型的Class对象Class[] classes1 = new Class[] { String.class };// 指定要调用的getName方法及WSDL文件的命名空间QName opAddEntry1 = new QName("http://service","getName");Object[] opAddEntryArgs1 = new Object[] {null };// 调用getGreeting方法并输出该方法的返回值System.out.println(serviceClient.invokeBlocking(opAddEntry1,opAddEntryArgs1, classes1)[0]);}}

写的不怎么全面,其中一些参数大家可以在网上查查资料!

转载于:https://my.oschina.net/stonezing/blog/114494

使用axis2 services.xml 发布web service相关推荐

  1. Web Service (二) CXF自动发布Web Service(No Spring)

    Web Service实现目前流行的框架主要有两种,cxf和axis这两个框架,下面是这两个框架的优缺点,我们这个项目中使用的是cxf这个框架,首先看一下没有集成spring的时候是怎么实现远程调用的 ...

  2. Tuscany SCA 发布Web Service

    有段时间没有学习SOA了,最近偶然碰到一个例子,运行修改理解后发布到此. 在前面的博客中有提到用axis2发布web service,借用了插件,并且步骤较繁多,现在来看下tuscany简单地通过配置 ...

  3. XML与Web Service基础知识点

    一.名词 XML:Extensible Markup Language, 可扩展标记语言.可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. XML与HTML的区别:XM ...

  4. asp.net发布web service时出现“未能创建类型”错误

    asp.net发布web service时出现"未能创建类型"错误 如果直接将web service发布之后,如果不转换成"应用程序"的话,将产生"未 ...

  5. 基于xfire发布web Service简单实例

    创建接口 package com.test.service; public interface CaculatorService {public int add(int a,int b);public ...

  6. Labview发布web service时出现错误 Error LabVIEW: (Hex 0xFFFEFA29)

    这里写自定义目录标题 问题由来 解决方案 问题由来 按照labview的帮助文档,练习web service,在发布的时候提示错误Error LabVIEW: (Hex 0xFFFEFA29). 解决 ...

  7. 发布Web Service 注意的问题

    记得要在web.config中添加以下配置代码,这样在其他机器上才能访问这个Web Service. <webServices>       <protocols>       ...

  8. (4) ebj学习:ejb发布web service

    一 Ejb服务端 1 整个服务端结构 2 代码 User.java public class User {private int id;private String username;private ...

  9. WebService大讲堂之Axis2(3):使用services.xml文件发布WebService

    用Axis2 实现Web Service ,虽然可以将POJO 类放在axis2\WEB-INF\pojo 目录中直接发布成Web Service ,这样做不需要进行任何配置,但这些POJO 类不能在 ...

最新文章

  1. linux 系统调用分析
  2. VoxelNet: 基于点云的三维空间信息逐层次学习网络
  3. Linux2017Linux架构师!
  4. TCP之三次握手和四次挥手过程
  5. Python多个版本指定如何指定
  6. aaynctask控制多个下载进度_做进度计划一路关卡困难重重?通关攻略了解一下!...
  7. 在 Linux 命令行中使用和执行 PHP 代码(一)
  8. python可打印字符_测试一个python字符串是否可打印
  9. ubuntu上的翻译软件,看论文神器
  10. NYOJ 144 小柯的烦恼
  11. 第39级台阶--递归
  12. Gartner点将分布式文件存储,浪潮存储缘何一鸣惊人?
  13. zookepper单机集群安装记录
  14. 个人案例 装修公司官网
  15. DDS、openDDS和fast DDS介绍
  16. 投影分带方法(我国的6°、3°分法)
  17. proteus常用元器件中英查询表
  18. mysql主备有几种方式,mysql 主备 主从 主主模式介绍
  19. 整理了4000字的Google数据可视化指南!
  20. Vm14 中安装mac时出现如图情况是怎么回事?

热门文章

  1. 如何编写内联if语句用于打印?
  2. Mipmap drawables图标
  3. 代码中启动ros节点roslaunch和rosrun,代码启动节点与关闭节点,地图切换
  4. Androidstudio抽取成员变量快捷键 快捷键大全 自定义setting文件
  5. .h5是什么文件_PPT转H5丨再也不用担心忘带U盘怎么办了
  6. storyboard 苹果启动图_iOS LaunchScreen.storyboard启动图更新
  7. 产品模块(HTML、CSS)
  8. 作为程序猿必须了解的生产者与消费者
  9. ❤️《JUC并发编程从入门到高级》(建议收藏)❤️
  10. 微信小程序API之video