AXIS使用笔记

发布时间:2014-09-25 21:47:03   来源:文档文库   
字号:

AXIS使用笔记

新建web工程websaxis2,在src下建立目录com.axis,导入axis的所有的jar

工程目录总览

服务器端:

A) 建立包com.axis,新建类ISayHi.java

package com.axis;

public interface ISayHi {

String sayHi(String name);

}

B) 修改web.xml

<listener> <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListenerlistener-class>

listener>

<servlet>

<servlet-name>AdminServletservlet-name>

<servlet-class>org.apache.axis.transport.http.AdminServletservlet-class>

<load-on-startup>1load-on-startup>

servlet>

<servlet>

<servlet-name>AxisServletservlet-name>

<servlet-class>org.apache.axis.transport.http.AxisServletservlet-class>

<load-on-startup>2load-on-startup>

servlet>

<servlet-mapping>

<servlet-name>AxisServletservlet-name>

<url-pattern>/servlet/AxisServleturl-pattern>

servlet-mapping>

<servlet-mapping>

<servlet-name>AxisServletservlet-name>

<url-pattern>*.jwsurl-pattern>

servlet-mapping>

<servlet-mapping>

<servlet-name>AxisServletservlet-name>

<url-pattern>/services/*url-pattern>

servlet-mapping>

<servlet-mapping>

<servlet-name>AdminServletservlet-name>

<url-pattern>/servlet/AdminServleturl-pattern>

servlet-mapping>

C)web-inf下添加文件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="D:\tomcat5.0.28\webapps\axis\WEB-INF\attachments"/>

<parameter name="dotNetSoapEncFix" value="true"/>

<parameter name="enableNamespacePrefixOptimization" value="false"/>

<parameter name="sendXMLDeclaration" value="true"/>

<parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>

<parameter name="sendXsiTypes" value="true"/>

<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="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>

<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>

<handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

<service name="AdminService" provider="java:MSG">

<parameter name="allowedMethods" value="AdminService"/>

<parameter name="enableRemoteAdmin" value="false"/>

<parameter name="className" value="org.apache.axis.utils.Admin"/>

<namespace>http://xml.apache.org/axis/wsdd/namespace>

<namespace>http://xml.apache.org/axis/wsdd/namespace>

<namespace>http://xml.apache.org/axis/wsdd/namespace>

service>

<service name="Version" provider="java:RPC">

<parameter name="allowedMethods" value="getVersion"/>

<parameter name="className" value="org.apache.axis.Version"/>

service>

<service name="asyncService" provider="java:MSG">

<parameter name="allowedMethods" value="process"/>

<parameter name="className" value="org.apache.axis.wsa.AsyncService"/>

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>

D)然后开始生产服务器端代码

myeclipse中按下快捷键crtl+shift+t,输入java2wsdl,一定看好是你自己项目下的axisjar包,

然后右键Debug as -> java aplientaction,你会看到控制台输出一大堆东西

然后右键Debug as -> open Debug Dialog

然后选择第二个选项卡arguments

在第一个框中输入

-l "http://10.10.156.238:8080/websaxis2/services/ISayHi"

-o service.wsdl com.axis.ISayHi

点击debug

语句解析:-l "http://10.10.156.238:8080/websaxis2/services/ISayHi"

Ip:8080/项目名字/web.xml中配置的名字/接口名

<servlet-mapping>

<servlet-name>AxisServletservlet-name>

<url-pattern>/services/*url-pattern>

servlet-mapping>

-o service.wsdl com.axis.ISayHi

-o 生成的wsdl的名字 针对哪个接口生成wsdl

这是刷新项目,就会看到多出一个文件service.wsdl

Emyeclipse中按下快捷键crtl+shift+t,输入wsdl2java,一定看好是你自己项 目下的axisjar(和上面的步骤一样)

在框中输入

-p com.axis.service

--server-side --skeletonDeploy true service.wsdl

-p 生成的目录名

--server-side --skeletonDeploy true 根据哪个wsdl文件生成

刷新你会看到多出这么多文件

打开deploy.wssdd

你会看到里面有这么一段

<service name="ISayHi" provider="java:RPC" style="rpc" use="encoded">

<parameter name="wsdlTargetNamespace" value="http://axis.com"/>

<parameter name="wsdlServiceElement" value="ISayHiService"/>

<parameter name="wsdlServicePort" value="ISayHi"/>

<parameter name="className" value="com.axis.service.ISayHiSoapBindingSkeleton"/>

<parameter name="wsdlPortType" value="ISayHi"/>

<parameter name="typeMappingVersion" value="1.2"/>

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

service>

每一个接口生成的不一样

接下来把这段文件拷贝到server-config.wsdd

中去。

然后打开ISayHiSoapBindingImpl.java

在里面完成你的实现类

到此服务器端编写完成了,发布到tomcat上去,启动,在浏览器中输入

Ok,服务端成功了

客户端

A) myeclipse中按下快捷键crtl+shift+t,输入wsdl2java,一定看好是你自己项 目下的axisjar

在里面输入

-p com.axis.client service.wsdl

-p 生成的目录名 根据哪个wsdl生成文件

你会看到生成了

然后新建一个类,这个类

我这里建的名字叫ISayHiClient.java

package com.axis.client;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

public class ISayHiClient {

protected transient static Log logger = LogFactory.getLog(ISayHiClient.class);

private static ISayHiClient client = null;

private ISayHiServiceLocator service = null;

public ISayHiClient() {

service = new ISayHiServiceLocator();

}

public static ISayHiClient getInstance() throws Exception {

if (null == client) {

synchronized (ISayHiClient.class) {

if (null == client)

client = new ISayHiClient();

}

}

return client;

}

public ISayHiServiceLocator getService() {

if(service==null)

service=new ISayHiServiceLocator();

return service;

}

public ISayHi_PortType getPortType() throws Exception {

//URL portAddress = WsUtil.getUrlAddress(WS_CLIENT_CODE);

return getService().getISayHi();

}

}

到此客户端也建完了

测试:

新建文件夹com.axis.test

新建类:ClientTest

package com.axis.test;

import java.rmi.RemoteException;

import com.axis.client.ISayHiClient;

public class ClientTest {

public static void main(String[] s) throws RemoteException, Exception{

String str = ISayHiClient.getInstance().getPortType().sayHi("wlm");

System.out.print(str);

}

}

运行这个类,你会看到

本文来源:https://www.2haoxitong.net/k/doc/6746c598941ea76e59fa041a.html

《AXIS使用笔记.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式