Axis服务发布与调用技术
Axis服务发布与调用技术 ? 1、用AXIS发布且部署在Tomcat下。实现了在本机和异地PC都能调用的效果 ? 一、??????????? 具体的发布方法 1、第一步写服务代码 注意这里必须先安装AXIS才能进行发布,方法是将axis-1_4下的axis文件夹拷贝到TOMCAT下的webapps里,注意用的到的jar包有: ?这里以一个简单例子说明问题 ? ???? Package??? com.sinosoft.webservice ? Public class???? HelloService ??????? Public string sayHelloToPerson (String name) { ??????????????? If( name==null || name.equals(“)) { ??????????????????? Name = “nobody”; } Return “Hello”+ name; } 2、第二步就是在TOMCAT下搭建web应用 1》打开TOMCAT,新建文件夹WS( 或者别的名字),再创建WEB-INFO(这里是固定的名字),再在WEB-INFO里创建两个文件夹:lib和classes以及一个文件 web.xml 内容是固定的: ?XML为 ?<?xml version="1.0" encoding="UTF-8"?> <web-app > ? <display-name>Apache-Axis</display-name> ? ??? <listener>? ????? <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>? ? </listener>? ???? ? <servlet>? ?? <servlet-name>AxisServlet</servlet-name>? ?? <display-name>Apache-Axis Servlet</display-name>? ?? <servlet-class>? ?????? org.apache.axis.transport.http.AxisServlet? ??? </servlet-class>? ?</servlet>? ? ? <servlet>? ?? <servlet-name>AdminServlet</servlet-name>? ??? <display-name>Axis Admin Servlet</display-name>? ?? <servlet-class>? ?????? org.apache.axis.transport.http.AdminServlet? ?? </servlet-class>? ?? <load-on-startup>100</load-on-startup>? ?</servlet>? ? ? <servlet>? ??? <servlet-name>SOAPMonitorService</servlet-name>? ?? <display-name>SOAPMonitorService</display-name>? ?? <servlet-class>? ?????? org.apache.axis.monitor.SOAPMonitorService? ??? </servlet-class>? ?? <init-param>? ????? <param-name>SOAPMonitorPort</param-name>? ? ???<param-value>5001</param-value>? ??? </init-param>? ?? <load-on-startup>100</load-on-startup>? ? </servlet>? ? ?<servlet-mapping>? ?? <servlet-name>AxisServlet</servlet-name>? ??? <url-pattern>/servlet/AxisServlet</url-pattern>? ?</servlet-mapping>? ? ?<servlet-mapping>? ?? <servlet-name>AxisServlet</servlet-name>? ??? <url-pattern>*.jws</url-pattern>? ?</servlet-mapping>? ? <servlet-mapping>? ?? <servlet-name>AxisServlet</servlet-name>? ??? <url-pattern>/services/*</url-pattern>? ? </servlet-mapping>? ?<servlet-mapping>? ? <servlet-name>SOAPMonitorService</servlet-name>? ?? <url-pattern>/SOAPMonitor</url-pattern>? ? </servlet-mapping>? ? ?<!-- uncomment this if you want the admin servlet -->? ?<!--? ? <servlet-mapping>? ?? <servlet-name>AdminServlet</servlet-name>? ??? <url-pattern>/servlet/AdminServlet</url-pattern>? ? </servlet-mapping>? ?-->? ?? <session-config>? ?????? <!-- Default to 5 minute session timeouts -->? ?????? <session-timeout>5</session-timeout>? ?? </session-config>? ? ??? <!-- currently the W3C havent settled on a media type for WSDL;? ??? http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft? ?? for now we go with the basic 'it's XML' response -->? ?<mime-mapping>? ?? <extension>wsdl</extension> ? ??? <mime-type>text/xml</mime-type>? ? </mime-mapping>? ?? ? ? <mime-mapping>? ?? <extension>xsd</extension>? ??? <mime-type>text/xml</mime-type>? ? </mime-mapping>? ? ?<welcome-file-list id="WelcomeFileList">? ?? <welcome-file>index.jsp</welcome-file>? ??? <welcome-file>index.html</welcome-file>? ??? <welcome-file>index.jws</welcome-file>? ? </welcome-file-list>? ? </web-app> ? 2》然后再将所需的jar包放到lib里??? 2》将刚写的java类编译一下 ? 方法如下: ??????? 用命令行的的方式: ?????????? 比如:写好的XXX.java文件放到D盘里的javatest里则 ?????????? 命令? ->D: ??????????????????? D->cd javatest ??????????????????? Javatest-> javac HelloService??? ? 最后在WEB-INFO下的classes里建立如下结构 com ??? sinosoft ????????????? webservice 将XXX.class放入webservice中 测试:输入http://localhost:8080/ws/services 3、发布服务 ? 发布Webservice需要使用现有的AdminService来实现。先写一个批处理文件,以后要是发布其他文件,则修改相应参数即可。 ? 1》创建deploy.wsdd文件 ? 内容如下: ? ?? <?xml version="1.0" encoding="UTF-8"?> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="HelloServices" provider="java:RPC"> <parameter name="className" value="com.sinosoft.webservice.HelloService"/> ?<parameter name="allowedMethods" value="*"/> ? //*************特别注意*************************************// ? 若服务包含封装对象? 即 Bean类? 则还要增加 ? <typeMapping>?????? </typeMapping> 详情请见 http://www.doc88.com/p-113616594654.html?? 或者 http://www.moon-soft.com/doc/36024.htm ? </service> ? ?</deployment> ? 注意其中红色部分HelloServices是访问地址最后的部分 ? http://host:port/ws/services/HelloServices?wsdl ? 2》创建发布webservice服务的批处理文件 deploywebservice.bat deploywebservice.bat如下: XML代码: java -cp activation.jar; axis-ant.jar; axis-schema.jar; axis.jar; commons-discovery-0.2.jar; commons-logging-1.0.4.jar; jaxrpc.jar; log4j-1.2.8.jar; mailapi.jar; saaj.jar; wsdl4j-1.5.1.jar; xmlsec-1.3.0.jar org.apache.axis.client.AdminClient -lhttp://localhost:8080/ws/services/AdminService deploy.wsdd ? -l后是访问的地址 最后是部署文件的文件名称 ?? 注意:这里将deploy.wsdd与deploywebservice.bat文件放到lib里面,运行批处理文件即可。 ? 3》最后一步:在WEB-INFO下建立 server-config.wsdd中将deploy.wsdd文件中的<service??? name=”? ”>部分拷贝过去。 ? server-config.wsdd内容如下: ? <?xml version="1.0" encoding="UTF-8"?> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> ?<globalConfiguration> ? <parameter name="sendMultiRefs" value="true"/> ? <parameter name="disablePrettyXML" value="true"/> ? <parameter name="adminPassword" value="admin"/> ? <parameter name="attachments.Directory" value="E:MyWorkMOSSmossitc-lab-mossWEB-INFattachments"/> ? <parameter name="axis.servicesPath" value="/mossWS/"/> ? <parameter name="dotNetSoapEncFix" value="true"/> ? <parameter name="enableNamespacePrefixOptimization" value="false"/> ? <parameter name="sendXMLDeclaration" value="true"/> ? <parameter name="sendXsiTypes" value="true"/> ? <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/> ? <requestFlow> ?? <handler type="java:org.apache.axis.handlers.JWSHandler"> ??? <parameter name="scope" value="session"/> ?? </handler> ?? <handler type="java:org.apache.axis.handlers.JWSHandler"> ??? <parameter name="scope" value="request"/> ??? <parameter name="extension" value=".jwr"/> ?? </handler> ? </requestFlow> ?</globalConfiguration> ?<handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/> ?<handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/> ?<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/> ?<handler name="soapmonitor" type="java:org.apache.axis.handlers.SOAPMonitorHandler"> ? <parameter name="wsdlURL" value="/axis/SOAPMonitorService-impl.wsdl"/> ? <parameter name="namespace" value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/> ? <parameter name="serviceName" value="SOAPMonitorService"/> ? <parameter name="portName" value="Demo"/> ?</handler> ? <service name="HelloServices" provider="java:RPC"> <parameter name="className" value="com.sinosoft.webservice.HelloService"/> ?<parameter name="allowedMethods" value="*"/> </service> ? ? ? ?<transport name="http"> ? <requestFlow> ?? <handler type="URLMapper"/> ?? <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/> ? </requestFlow> ? <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/> ? <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/> ? <parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/> ? <parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/> ? <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/> ? <parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/> ?</transport> ?<transport name="local"> ? <responseFlow> ?? <handler type="LocalResponder"/> ? </responseFlow> ?</transport> </deployment> ? 最后注意文件中的蓝色字体即是deploy.wsdd中的内容 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |