首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

webServices学习之一——axis1兑现helloWorld

2012-12-28 
webServices学习之一——axis1实现helloWorld上周由于工作需要,通过webservices发布服务,进行数据交换。于是

webServices学习之一——axis1实现helloWorld

上周由于工作需要,通过webservices发布服务,进行数据交换。于是果断找出09年在丽水开发时的学习笔记,webservice服务采用开源组件axis1的1.3版本实现:

?

一,新建web项目,并修改web.xml文件,将如下代码cope到web.xml文件中

?

 <servlet>     <servlet-name>AxisServlet</servlet-name>     <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>   </servlet>   <servlet>     <servlet-name>AdminServlet</servlet-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>     <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>       <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>  
?

? ? 二、在web-inf目录下新增server-config.wsdd文件,文件内容如下:

?

<?xml version="1.0" encoding="UTF-8"?><deployment name="defaultClientConfig"            xmlns="http://xml.apache.org/axis/wsdd/"            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"            xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler"> <globalConfiguration>   <parameter name="disablePrettyXML" value="true"/>   <parameter name="dotNetSoapEncFix" value="true"/>   <parameter name="enableNamespacePrefixOptimization" value="false"/>   <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>     <!-- uncomment this if you want the SOAP monitor -->     <!--     <handler type="java:org.apache.axis.handlers.SOAPMonitorHandler"/>     -->   </requestFlow>   <!-- uncomment this if you want the SOAP monitor -->   <!--   <responseFlow>     <handler type="java:org.apache.axis.handlers.SOAPMonitorHandler"/>   </responseFlow>   --> </globalConfiguration> <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/> <handler type="java:org.apache.axis.transport.local.LocalResponder" name="LocalResponder"/> <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" name="Authenticate"/> <service name="AdminService" provider="java:MSG">  <namespace>http://xml.apache.org/axis/wsdd/</namespace>  <parameter name="allowedMethods" value="AdminService"/>  <parameter name="enableRemoteAdmin" value="false"/>  <parameter name="className" value="org.apache.axis.utils.Admin"/> </service><!--具体的web service配置 --> <service name="Version" provider="java:RPC">  <parameter name="allowedMethods" value="getVersion"/>  <parameter name="className" value="org.apache.axis.Version"/> </service> <service name="MyServices" provider="java:RPC">  <parameter name="allowedMethods" value="*"/>  <parameter name="className" value="haohao.MyServices"/> </service> <transport name="http">  <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:wsdl"                value="org.apache.axis.transport.http.QSWSDLHandler"/>  <requestFlow>   <handler type="URLMapper"/>   <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>  </requestFlow> </transport> <transport name="local">  <responseFlow>   <handler type="LocalResponder"/>  </responseFlow> </transport></deployment>

?

三、在server-config.wsdd中配置要发布的文件的内容:

?

? ? ? ?<service name="MyServices" provider="java:RPC">

<parameter name="className" value="haohao.MyServices"/>

? <parameter name="allowedMethods" value="*"/>

?</service>

?

其中,services标签的name属性配置,访问发布的文件的名字。如:http://localhost:8888/MyTest/services/MyServices?wsdl. 中的MyServices,就是上面配置文件中的name属性值。

parameter标签的name的allowedmethods,value="*" 指所有的方法。 parameter标签的name的className, value="haohao.MyServices" 指要发布的文件。

?

?

四、加入jar文件,可以在附件中获得。

?

?

五、启动tomcat,访问地址:

http://localhost:8080/axisTest/services/MyServices?wsdl

?

结果为:

?

This XML file does not appear to have any style information associated with it. The document tree is shown below.<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:8080/axisTest/services/MyServices" xmlns:intf="http://localhost:8080/axisTest/services/MyServices" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://localhost:8080/axisTest/services/MyServices"><!--WSDL created by Apache Axis version: 1.3 Built on Oct 05, 2005 (05:23:37 EDT)--><wsdl:message name="sayHelloRequest"></wsdl:message><wsdl:message name="sayHelloResponse"><wsdl:part name="sayHelloReturn" type="xsd:string"/></wsdl:message><wsdl:portType name="MyServices"><wsdl:operation name="sayHello"><wsdl:input message="impl:sayHelloRequest" name="sayHelloRequest"/><wsdl:output message="impl:sayHelloResponse" name="sayHelloResponse"/></wsdl:operation></wsdl:portType><wsdl:binding name="MyServicesSoapBinding" type="impl:MyServices"><wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="sayHello"><wsdlsoap:operation soapAction=""/><wsdl:input name="sayHelloRequest"><wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://haohao" use="encoded"/></wsdl:input><wsdl:output name="sayHelloResponse"><wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axisTest/services/MyServices" use="encoded"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="MyServicesService"><wsdl:port binding="impl:MyServicesSoapBinding" name="MyServices"><wsdlsoap:address location="http://localhost:8080/axisTest/services/MyServices"/></wsdl:port></wsdl:service></wsdl:definitions>#next_pages_container { width: 5px; hight: 5px; position: absolute; top: -100px; left: -100px; z-index: 2147483647 !important; }

?

?

服务端 发布完成。

?

?

?

六、客户端:

?

TestClient.java

package haohao;import org.apache.axis.client.Call;import org.apache.axis.client.Service;public class TestClient {//调用的webservice url路径private static String serviceUrl = "http://localhost:8080/axisTest/services/MyServices?wsdl";public String heihei(String name){String ret = null;try{Service service = new Service();Call cc = (Call) service.createCall();cc.setTargetEndpointAddress(new java.net.URL(serviceUrl));cc.setOperationName("sayHello");ret = (String) cc.invoke(new Object [] {name});}catch(Exception ex){ex.printStackTrace();}return ret;}public static void main(String args[]) {//调用OA系统的登录表,验证OA用户登陆TestClient client = new TestClient();System.out.println(client.heihei("haohaoguo"));}}
?

?

热点排行