加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Axis服务发布与调用技术

发布时间:2020-12-16 23:18:35 所属栏目:安全 来源:网络整理
导读:Axis服务发布与调用技术 ? 1、用AXIS发布且部署在Tomcat下。实现了在本机和异地PC都能调用的效果 ? 一、??????????? 具体的发布方法 1、第一步写服务代码 注意这里必须先安装AXIS才能进行发布,方法是将axis-1_4下的axis文件夹拷贝到TOMCAT下的webapps里,注

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读