Axis服务发布与调用技术

来源:互联网 发布:鸟瞰图用什么软件 编辑:程序博客网 时间:2024/05/16 09:34

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:\MyWork\MOSS\moss\itc-lab-moss\WEB-INF\attachments"/>

  <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中的内容

0 0
原创粉丝点击