axis2还有人用吗(Axis2的具体使用)
本文目录
- Axis2的具体使用
- axis2调用webservice怎么传递多个参数
- 问个比较弱的问题,我刚接触webservice ,axis和axis2 有什么区别啊
- 如何在工程中使用axis2部署webservice
Axis2的具体使用
为了搞个Web Services,让我真是煞费苦心.还好最后用到了axis,在axis上发布Web Services是一件很轻松的事情.甚至不做配置的情况下都可以采用即时发布.就象JSP的发布安装axis需要Servlet容器,我用的是Tomcat-5.0.28,下载Tomcat和axis我就不说了,下载后将axis解压后,将axis文件夹考到Tomcat的webapps下.设置环境变量是非常重要的,设置环境变量:AXISCLASSPATH为:%AXIS_LIB%axis.jar;%AXIS_LIB%commons-discovery-0.2.jar;%AXIS_LIB%commons-logging-1.0.4.jar;%AXIS_LIB%jaxrpc.jar;%AXIS_LIB%saaj.jar;%AXIS_LIB%log4j-1.2.8.jar;%AXIS_LIB%wsdl4j-1.5.1.jar;%AXIS_LIB%xml-apis.jar;%AXIS_LIB%xercesImpl.jar设置AXIS_LIB为随便一个文件夹,将上面的一堆jar包搞进去.再将activation.jar, mail.jar, wsdl4j-1.5.1.jar搞到 %CATALINA_HOME%commonlib下.***隐藏网址***axis支持两种发布方式:(先启动Tomcat)1.即时发布:直接使用java语言.jws文件,将它放到axis目录下.实例:用文本器编写HelloWorld.jws public class HelloWorld{ public String helloWorld(){ System.out.println("Hello World!"); return "Hello World!"; }}***隐藏网址***2.定制发布:将编译完的.class文件放到axisWEB-INF,要包含包的文件夹.然后编写.wsdd文件,用org.apache.axis.client.AdminClient来发布实例:编写并编译文件Capacity.java.package samples.capacity;public class Capacity{ public double convertGallon2Litre(double gallon,String user){ if("Andy".equals(user)) return gallon * 4.546; else return 0.0d; }}将Capacity.class文件拷贝到axisWEB-INFclasses下(带着文件夹拷),编写deploy.wsdd文件***隐藏网址*** 《service name="Capacity" provider="java:RPC"》 《parameter name="className" value="samples.capacity.Capacity"/》 《parameter name="allowedMethods" value="*"/》 《/service》《/deployment》拷到Capacity.class所在的目录,在控制台切换到该目录执行:java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd显示如下信息说明发布完毕:Processing file deploy.wsdd《Admin》Doneprocessing《/Admin》***隐藏网址***调用Web Services:编写AXISTest.java文件:package axisexercise;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;import javax.xml.rpc.ParameterMode;public class AXISTest{ public static void main(String args) throws Exception{ Service service = new Service(); Call call = ( Call ) service.createCall(); //////////访问即时发布的Distance服务 //设置访问点***隐藏网址*** //设置操作名 call.setOperationName("convertMile2Kilometre"); //设置入口参数 call.addParameter("op1",XMLType.XSD_DOUBLE,ParameterMode.IN); call.setReturnType( XMLType.XSD_DOUBLE ); Double d1 = new Double( 190 ); //调用服务 System.out.println(d1 + " 英里相当于 " + call.invoke(new Object {d1}) + " 公里!"); //////////访问定制发布的Capacity服务 call = ( Call ) service.createCall(); //设置访问点***隐藏网址*** //设置操作名 call.setOperationName("convertGallon2Litre"); //设置入口参数 call.addParameter("op1",XMLType.XSD_DOUBLE,ParameterMode.IN); call.addParameter("op2",XMLType.XSD_STRING,ParameterMode.IN); call.setReturnType( XMLType.XSD_DOUBLE ); d1 = new Double( 10.00 ); String str1 = "ss"; //调用服务 System.out.println(d1 + " 加仑相当于 " + call.invoke( new Object {d1,str1} ) + " 升!"); }}编译:javac -classpath .;%AXISCLASSPATH% AXISTest.java执行:java -classpath .;%CATALINA_HOME%commonlibwsdl4j-1.5.1.jar;%AXISCLASSPATH% axisexercise.AXISTest显示如下结果:log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).log4j:WARN Please initialize the log4j system properly.190.0 英里相当于 305.71 公里!10.0 加仑相当于 0.0 升!若将AXISTest.java中的str1改为Andy,则接过就是45.46升
axis2调用webservice怎么传递多个参数
代码一下看 不出 建议多个参用 xml格式发送 这是webservices通用做法 还好建议不要用 axis2 官方已经不支持了用xfire吧
问个比较弱的问题,我刚接触webservice ,axis和axis2 有什么区别啊
Axis全称Apache eXtensible Interaction System,是apache组织下的一个开源项目,用来做webservice开发的,有java版的实现,也有c++版的实现,其前身最早是IBM的SOAP4J,后来捐给Apache后改名Apache SOAP,也就是支持SOAP1.1的那个版本,到现在的AXIS已经是第三代了,AXIS对Apache SOAP的改进有很多,比如用SAX代替以前的DOM,增加对WSDL的支持,支持SOAP1.2等等***隐藏网址******隐藏网址***介绍了部署webservice的两种方法后,下面说说客户端的访问方式,也有两种,一种是通过axis实现的java里面的JAX-RPC进行动态调用,另外一种就是通过服务器端产生的wsdl文件利用WSDL2Java工具生成Client Stub后访问。通过JAX-RPC的比较简单,需要提供的有SOAP router URL,service namespace,operation name,operation parameter types,operation return types,看看下面这个例子就明白了: public SOAPWrapper() {***隐藏网址*** try { Service service = new Service(); call = (Call)service.createCall(); call.setTargetEndpointAddress(new url(/location)); } catch (Throwable t) { handleError("SOAPWrapper (constructor) had an Exception.",t); } } public void create(Book book) { try { call.removeAllParameters(); call.setOperationName("create"); call.addParameter("arg1",qn,ParameterMode.IN); call.setReturnType(XMLType.AXIS_VOID); call.invoke(new Object {book}); return; } catch (Throwable t) { handleError("SOAPWrapper (create) had an Exception.",t); return; } }程序中的Call和Service是对JAX-RPC中Call和Service的具体实现:org.apache.axis.client.Call implements javax.xml.rpc.Call,org.apache.axis.client.Service implements javax.xml.rpc.Service第二种客户端的方法就是利用WSDL2Java产生Client stub后通过stub调用,WSDL2Java的操作对象是service所对应的wsdl文件,这个文件怎么产生呢?一种方法前面是由axis自动产生,如前面服务器端的配置所说,无论通过jws或是wsdd的方式,axis都会产生相应的wsdl;还有一种方式就是利用Java2WSDL对java源文件进行操作也可以产生相应的wsdl文件。
如何在工程中使用axis2部署webservice
一、新建Web Project,名为“WebServiceDemo”二、下载axis2-1.5-war.zip包,解压缩将axis2/WEB-INF/lib 里的jar包拷贝到 WebServiceDemo/WebRoot/WEB-INF/lib/将axis2.war/axis2-web拷贝至WebServiceDemo/ WebRoot/axis2-web/axis2需要的JAR包:三、配置axis2 servlet打开WebServiceDemo/WebRoot/WEB-INF/web.xml,增加如下配置:《servlet》《servlet-name》AxisServlet《/servlet-name》***隐藏网址***《load-on-startup》1《/load-on-startup》 《/servlet》 《servlet-mapping》《servlet-name》AxisServlet《/servlet-name》《url-pattern》/services/*《/url-pattern》 《/servlet-mapping》四、写一个简单的web服务类package service; public class MyService {public String sayHello(String name) {return name + "says /"Hello!/"";} } 五、配置Web Service.由于axis2已嵌入到WebServiceDemo项目中,所以web service就不用打包成aar,而是直接在/WEB-INF目录下创建相应的文件夹和services.xml,目录结构如下图:六、services.xml《?xml version="1.0" encoding="UTF-8"?》 《service name="fmService" targetNamespace="webservice.sinohuarui.com"》《schema schemaNamespace="webservice.sinohuarui.com/xsd/" /》《description》my web service《/description》《parameter name="ServiceClass"》service.MyService《/parameter》《operation name="sayHello"》《messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /》《/operation》《/service》如果一个类具有多个webservice方法的时候,使用serviceGroup进行配置:《?xml version="1.0" encoding="UTF-8"?》 《serviceGroup》《service name="myService"》《description》Web Service例子《/description》《parameter name="ServiceClass"》service.MyService《/parameter》《messageReceivers》《messageReceiver mep="w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /》《messageReceiver mep="w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /》《/messageReceivers》《/service》 《/serviceGroup》七、在浏览器中访问localhost:8080/WebServiceDemo/services/listServices可以看到myService服务,说明服务已部署成功输入localhost:8080/WebServiceDemo/services/myService?wsdl可以查看到该Web服务的描述文件***隐藏网址***
更多文章:
上线了小程序官网(新零售如何结合小程序新零售的小程序品牌策略怎么做)
2024年5月4日 08:20
keenon(be keen on 和be keen to的区别 RT)
2024年7月13日 16:19
jsp的form表单提交几种方式(在java中写jsp网页和servlet中,form表单的提交方法get与post的区别以及那个好啊)
2024年7月23日 05:10
js array remove(js 怎么在数组删除第一个元素)
2024年7月6日 09:27
鼠标底部图片(我刚刚网购了一个razer的铜斑蛇 鼠标的下面怎么和图片的不一样 那个PC CE的 网上图片是左下角 我的是右下)
2024年6月26日 22:58
html文件发给别人能打开吗(为什么把HTML格式的文件发给别人别人看不了啊)
2024年9月7日 16:55
bad的比较级和最高级(bad的比较级和最高级用英语怎么写)
2024年1月16日 09:00
matlab中的param是什么意思?jsp中param是什么意思
2024年7月1日 20:25
sublime安装教程(sublime text 2 中文怎么安装)
2024年7月5日 05:46
efficient和effective的区别(effective和efficient的区别)
2024年1月23日 00:00
together什么意思(together什么意思,怎么读)
2024年6月20日 12:52