您的位置:首页 > 其它

Axis服务发布与调用技术

2014-10-15 19:21 288 查看
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>
详情请见
b9be

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中的内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息