Axis通过wsdd部署Web Service

axis网上的教程很多,不过搜来搜去,总是只有那么几篇。仔细看了一下那几篇文章,都感觉到不是自己想要的,所以自己整理了一篇分享一下。

 

本文介绍axis应用的一个小例子,没有麻烦的命令行操作,只需照下面的步骤做就可以了。以下是详细的操作步骤。(注:本实例用的是axis,非axis2)

 

  1. 1.       环境准备

l  MyEclipse 6.5

l  Tomcat 6

l  JDK 1.5

l  axis(非axis2)

 

  1. 2.       新建web工程

新建一web工程,工程名称为axistest。新建完成后,导入下图所示的axis相关的jar包。

 

 

  1. 3.       在web.xml中添加axis相关的配置信息

 

[xhtml] view plain copy
  1. <servlet>  
  2.     <display-name>Apache-Axis Servlet</display-name>  
  3.     <servlet-name>AxisServlet</servlet-name>  
  4.     <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>  
  5. </servlet>  
  6.   
  7. <servlet>  
  8.     <display-name>Axis Admin Servlet</display-name>  
  9.     <servlet-name>AdminServlet</servlet-name>  
  10.     <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>  
  11.     <load-on-startup>100</load-on-startup>  
  12. </servlet>  
  13. <servlet-mapping>  
  14.     <servlet-name>AxisServlet</servlet-name>  
  15.     <url-pattern>/servlet/AxisServlet</url-pattern>  
  16. </servlet-mapping>  
  17. <servlet-mapping>  
  18.     <servlet-name>AxisServlet</servlet-name>  
  19.     <url-pattern>*.jws</url-pattern>  
  20. </servlet-mapping>  
  21. <servlet-mapping>  
  22.     <servlet-name>AxisServlet</servlet-name>  
  23.     <url-pattern>/services/*</url-pattern>  
  24. </servlet-mapping>  
  25.    <servlet-mapping>  
  26.     <servlet-name>AdminServlet</servlet-name>  
  27.     <url-pattern>/servlet/AdminServlet</url-pattern>  
  28. </servlet-mapping>  

 

 

  1. 4.       新建提供服务的Java

在src下新建com包,在com包下新建HelloWorld类,HelloWorld的内容如下:

 

[java] view plain copy
  1. package com;  
  2.   
  3. public class HelloWorld {  
  4.   
  5.     public String sayHello(String msg){  
  6.         if(null==msg || "".equals(msg)){  
  7.             return "您好!";  
  8.         }else{  
  9.             return "您好" + msg + "!";  
  10.         }  
  11.     }  
  12.       
  13.     public int sayAge(){  
  14.         return 28;  
  15.     }  
  16.   
  17. }  

  

 

  1. 5.       配置server-config.wsdd

在WEB-INF下新建server-config.wsdd文件,内容如下:

 

[xhtml] view plain copy
  1. <deployment xmlns="http://xml.apache.org/axis/wsdd/"  
  2.     xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
  3.   
  4.     <!-- 处理器 -->  
  5.     <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />  
  6.           
  7.     <!-- 一个服务 -->  
  8.     <!-- provider="java:RPC"  webservice是以javabean的形式提供的-->  
  9.     <service name="helloWorldService" provider="java:RPC">  
  10.         <!-- 指定类名 -->  
  11.         <parameter name="className" value="com.HelloWorld" />  
  12.         <!-- 类中允许访问的方法 -->  
  13.         <parameter name="allowedMethod" value="*"></parameter>  
  14.     </service>  
  15.       
  16.     <!-- 指定处理器 -->  
  17.     <transport name="http">  
  18.         <requestFlow>  
  19.             <handler type="URLMapper"/><!-- 引用上边的 -->  
  20.         </requestFlow>  
  21.     </transport>  
  22.       
  23. </deployment>  

 

wsdd文件标签节点说明:

deployment:表明这是一个axis部署描述文件;

service:axis提供的一个web service服务。service标签中parameter allowedMethod用于指定一个以空格分隔的方法名,只有这些方法可以通过web service访问。也可以将这个值指定为“*”表示所有的方法都可以访问。

provider:服务类型,共有四种,分别是RPC,Document,Wrapped和Message。详见org.apache.axis.providers包的API文档;

parameter:用来设置Axis的各种属性;

requestFlow:局的请求Handlers,在调用实际的服务之前调用;

transport:定义了服务器端的传输方式

 

至此web service相关的东西已经配置好,此时工程的目录结构如下

 

 

 

 

  1. 6.       部署到Tomcat测试

将工程发布到Tomcat,在浏览器里访问http://127.0.0.1:9999/axistest/services,如果出现如下页面,则表示web service部署成功

 

 

点击上面的wsdl链接,进入下图所示页面

 

注意上面的红圈的namespace,下面测试QName有用到。

 

  1. 7.       客户端测试

在com包下新建测试类,名称为ClientTest,内容如下:

 

[java] view plain copy
  1. package com;  
  2.   
  3. import java.NET.MalformedURLException;  
  4. import java.rmi.RemoteException;  
  5.   
  6. import javax.xml.namespace.QName;  
  7. import javax.xml.rpc.ServiceException;  
  8.   
  9. import org.apache.axis.client.Call;  
  10. import org.apache.axis.client.Service;  
  11.   
  12. /** 
  13.  * @author 花非花雾非雾 
  14.  * @date 2010-12-24 
  15.  */  
  16. public class ClientTest {  
  17.   
  18.     public static void main(String[] args) throws MalformedURLException, RemoteException {  
  19.           
  20.         Service service = new Service();  
  21.         try {  
  22.               
  23.             Call call = (Call) service.createCall();  
  24.             //设置地址  
  25.             call.setTargetEndpointAddress(new java.Net.URL("http://127.0.0.1:9999/axistest/services/helloWorldService?wsdl"));  
  26.             //设置要执行的方法  
  27.             call.setOperationName(new QName("http://com","sayHello"));  
  28.             //设置要传入参数,如果没有要传入的参数,则不要写这个  
  29.             call.addParameter("msg", org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);  
  30.             //设置返回的类型  
  31.             call.setReturnType(org.apache.axis.Constants.XSD_STRING);  
  32.               
  33.             String name = "花非花雾非雾";  
  34.             //执行,调用webservice  
  35.             String result = (String) call.invoke(new Object[]{name});  
  36.             System.out.println("返回的结果是:"+result);  
  37.               
  38.         } catch (ServiceException e) {  
  39.             e.printStackTrace();  
  40.         }  
  41.     }  
  42.   
  43. }  

  

 

如果一切正常,运行结果如下:

返回的结果是:您好花非花雾非雾!

 

 

参考资料:

  1. axis 的官方资料

转载于:https://www.cnblogs.com/forestwolf/p/6187442.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

弹簧特性

1.概述 本教程将展示如何通过XML或Java配置在Spring中设置和使用属性 。 在Spring 3.1之前 &#xff0c;将新的属性文件添加到Spring并使用属性值并不像它那样灵活和健壮。 从Spring 3.1开始 &#xff0c;新的Environment和PropertySource抽象大大简化了此过程。 2.通过XML名…

php-cgi cpu很高,php-cgi占用cpu资源过高的解决方法

转的网上的&#xff0c;不过对PHP-CGI菜鸟的人&#xff0c;还是有点帮助的。1. 一些php的扩展与php版本兼容存在问题&#xff0c;实践证明 eAccelerater与某些php版本兼容存在问题&#xff0c;具体表现时启动php-cgi进程后&#xff0c;运行10多分钟&#xff0c;奇慢无比&#x…

《做中学》读后有感

《做中学》读后有感 最近读了娄老师的“做中学”系列文章&#xff0c;有很大感触&#xff0c;今天想着重谈一谈我在学习方面收到的启发。 如何成功get一项技能 如果问到“如何开始get一项技能”&#xff0c;我想我们应该是最有发言权的一代。从小就被爸爸妈妈引导着参加各种课外…

多表之间关联查询

内连接 jion on 自连接 本表进行内连接的查询形式 外链接&#xff1a; 左链接 写法&#xff1a;select 字段 from 表1 t left join 表2 s on t.字段1 s.字段1 where 条件 或者 作用&#xff1a;保证左边的表的数据全部显示&#xff0c;包括空的 右链接 写法 &#xff1a;sele…

php文件夹0777,PHP代码mkdir(‘images’,’0777′)创建一个具有411权限的文件夹!为什么?...

我发誓这是昨天的工作.然而,现在下面的代码破坏文件夹没有问题,但创建一个具有411权限的新文件夹应该是777.我的代码昨天这样做.这样做的目的是压缩文件夹,传递文件夹,删除图像,然后为图像创建新目录.有人能告诉我我做错了什么或我应该做什么&#xff1f;谢谢function delete_d…

调查HashDoS问题

近一个月前&#xff0c;我就如何在不与供应商互动的情况下临时解决 28C3上出现的HashDoS问题或其他代码缺陷发表了一些想法。 现在是时候更深入地研究复杂性攻击并查看来源了。 我完全假设java.util.HashMap和java.util.Hashtable是受此攻击影响的最常用的Java数据结构&#xf…

Linq 和 EF Contains示例

List<int> unitIDListnew List<int>(); //此处添加int元素 var query DB.ElecConsumers.Where(c > unitIDList.Contains(c.ParentUnitID)); //EF方式 var query1 (from c in DB.ElecConsumers where unitIDList.Contains(c.ParentUnitID ) select c); //Linq方…

date 显示或设置系统时间和日期

显示或设置系统时间和日期 date [options] [format] date [options] [new date] date用来显示系统的时间和日期&#xff0c;超级用户可以使用date来更改系统时钟 选项 %H 小时&#xff0c;24小时制&#xff08;00~23&#xff09; %I 小时&#xff0c;12小时制&#xff…

Java 7:WatchService

在Java 7的所有新功能中&#xff0c;更有趣的是WatchService&#xff0c;它增加了监视目录更改的功能。 WatchService直接映射到本机文件事件通知机制&#xff08;如果有&#xff09;。 如果本机事件通知机制不可用&#xff0c;则默认实现将使用轮询。 结果&#xff0c;响应性&…

做一件事情的3个关键指标:兴趣、能力和回报

最近突然有了一点新的感悟&#xff0c;在原有的认识基础之上。关于找工作&#xff0c;大家说的最多的&#xff0c;根据自己的“兴趣”和“能力”。我觉得这是不够的&#xff0c;还应该加上一个“回报”。兴趣&#xff1a;对一件事有没有愿望去尝试&#xff0c;侧重“好奇心”。…

iOS应用内支付(IAP)详解

在iOS开发中如果涉及到虚拟物品的购买&#xff0c;就需要使用IAP服务&#xff0c;我们今天来看看如何实现。 在实现代码之前我们先做一些准备工作&#xff0c;一步步来看。 1、IAP流程 IAP流程分为两种&#xff0c;一种是直接使用Apple的服务器进行购买和验证&#xff0c;另一种…

vagrant box php,vagrant box php开发环境配置 -- nginx

centos7.3 直接用yum安装nginx的版本是1.10.2&#xff0c;当前的最新稳定版是1.10.3&#xff0c;暂时不更新&#xff0c;直接安装yum安装nginxsudo yum install -y nginx测试nginx -t启动sudo service nginx startps -ef|grep nginxcurl -i localhost在virtualbox设置网络的端口…

使用ASM 4处理Java类文件–第二部分:Tree API

什么是ASM树API&#xff1a; ASM树API是ASM的一部分&#xff0c;可让您创建/修改内存中的类。 该类被视为信息树。 像整个类一样&#xff0c;它是ClassNode的实例&#xff0c;其中包含FieldNode对象列表&#xff0c;MethodNode对象列表等。本文假设读者已经在这里阅读了第一部分…

php 去除 html 属性,用PHP 去掉所有html标签里的部分属性

用PHP 去掉所有html标签里的部分属性http://zhidao.baidu.com/question/418471924.html用PHP 去掉所有html标签里的部分属性 tppabsset_time_limit(0);function view_dir($dir){$dpopendir($dir); //打开目录句柄//echo "".$dir."";$path2;while ($file r…

在Windows上安装Elasticsearch 5.0

在windows上安装Elasticsearch Elasticsearch可以使用.zip软件包安装在Windows上。 elasticsearch-service.bat命令&#xff0c;它将设置Elasticsearch作为服务运行。 Elasticsearch的最新稳定版在Download Elasticsearch下载&#xff0c;其他的版本在Past Releases page下载。…

Java EE 6示例– Galleria

您是否一直想知道在哪里可以找到使用Java EE 6构建的良好端到端示例&#xff1f; 我有。 您在网上找到的大多数东西都是非常基础的&#xff0c;不能解决现实世界中的问题。 Java EE 6教程就是这样。 所有其他内容&#xff0c;例如Adam Bien所发表的大多数内容&#xff0c;都是范…

二维有限体积 matlab,二维有限体积法计算热传导及源码.pdf

二维有限体积法计算热传导及源码//#include "stdafx.h"#include #include #include #include #include using namespace std;#define q 500#define k 1000void main (){ //input the value you want:double L,dx,dy,T,Ax,Ay,d;int m,n,i,j,kk,mm ;//char str1[20];ch…

ubuntu与win10互换硬盘

实例&#xff1a;将sdb上的ubuntu转移至sda&#xff0c;将sda上的win转移至sdb1. 备份资料2. 制作老毛桃PE盘3. 格式化sda4. dd if/dev/sdb of/dev/sda ,将sdb克隆到sda上5. 利用Linux live cd修复grub2&#xff08;BIOS不会认GPT分区&#xff09; sudo grub-install /dev/sda …

如何在Jetty中使用SPDY

SPDY是Google提出的一种新协议&#xff0c;是针对网络的新协议。 SPDY与HTTP兼容&#xff0c;但尝试通过压缩&#xff0c;多路复用和优先级降低网页负载。准确地说&#xff0c;快速的目标是&#xff1a;&#xff08; http://dev.chromium.org/spdy/spdy-whitepaper &#xff09…

虐杀外星人java,逆天游戏《毁灭全人类2》登PS4 外星人疯狂虐杀地球人

逆天游戏《毁灭全人类2》登PS4 外星人疯狂虐杀地球人2016-10-17 10:45:58来源&#xff1a;游戏下载编辑&#xff1a;小年青评论(0)广大的小伙伴都有看过许多外星人企图入侵毁灭地球的电影&#xff0c;已此为题材而开发的游戏也不在少数。近日泛欧洲游戏信息组织又为一款该种题材…