axis备忘

最近接手一个项目,web service用的是axis,简单地做了一个Demo来熟悉。中间碰到了不少麻烦,现在把整个过程记录下来备忘。

 

开发环境:Eclipse JEE

1.新建Dynamic Web Project。

2.下载axis 1.4,解压,将lib内的文件拷贝到项目的WEB-INF/lib中。

3.下载activation.jar和mail.jar,同样拷贝到项目的WEB-INF/lib中。这两个jar不是运行必需,但是在由deploy.wsdd生成server-config.wsdd过程中要用到。我是从axis2 1.6的lib中直接提取。

4.修改web.xml,添加如下内容。

<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-mapping>
  <servlet-name>AxisServlet</servlet-name>
  <url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>AxisServlet</servlet-name>
  <url-pattern>/services/*</url-pattern>
</servlet-mapping>

部署项目到服务器中,访问${app-path}/servlet/AxisServlet。

 axis备忘

到现在,基本的框架已经可以使用。目前项目的目录结构是:

├─src
└─WebContent
    └─WEB-INF
        │  web.xml
        │
        └─lib
                activation-1.1.jar
                axis-ant.jar
                axis.jar
                commons-discovery-0.2.jar
                commons-logging-1.0.4.jar
                jaxrpc.jar
                log4j-1.2.8.jar
                log4j.properties
                mail-1.4.jar
                saaj.jar
                wsdl4j-1.5.1.jar

5.编写服务代码及deploy.wsdd、undeploy.wsdd。

package test;

public class TestService {
	public String welcome(String name) {
		return "Welcome, " + name + "!";
	}
}

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
	xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
	<service name="TestService" provider="java:RPC">
		<parameter name="className" value="test.TestService" />
		<parameter name="allowedMethods" value="*" />
	</service>
</deployment>

<undeployment xmlns="http://xml.apache.org/axis/wsdd/">
	<service name="TestService" />
</undeployment>

6.生成server-config.wsdd。

启动服务器,进入WEB-INF下执行

java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/TestService deploy.wsdd

为了方便可以使用ant脚本。

<?xml version="1.0" ?>
<project name="wsdd-deploy" default="deploy">
	<target name="deploy">
		<java classname="org.apache.axis.client.AdminClient" fork="true">
			<jvmarg value="-Djava.ext.dirs=lib" />
			<arg value="-lhttp://localhost:8080/axis/services/TestService" />
			<arg value="deploy.wsdd" />
		</java>
	</target>

	<target name="undeploy">
		<java classname="org.apache.axis.client.AdminClient" fork="true">
			<jvmarg value="-Djava.ext.dirs=lib" />
			<arg value="undeploy.wsdd" />
		</java>
	</target>
</project>

访问${app-path}/servlet/AxisServlet。

axis备忘

7.编写客户端代码测试。

package test;

import javax.xml.namespace.QName;
import javax.xml.rpc.Call;

import org.apache.axis.client.Service;

public class TestClient {
	public static void main(String[] args) throws Exception {
		String endpoint = "http://localhost:8080/axis/services/TestService";

		Service service = new Service();
		Call call = service.createCall();
		call.setTargetEndpointAddress(endpoint);
		call.setOperationName(new QName(endpoint, "welcome"));
		Object result = call.invoke(new Object[] { "baby" });
		System.out.println(result);
	}
}

输出:

Welcome, baby!

最终目录结构:

├─src
│  └─test
│          TestClient.java
│          TestService.java
│
└─WebContent
    └─WEB-INF
        │  deploy.wsdd
        │  undeploy.wsdd
        │  web.xml
        │  wsdd-build.xml
        │
        └─lib
                activation-1.1.jar
                axis-ant.jar
                axis.jar
                commons-discovery-0.2.jar
                commons-logging-1.0.4.jar
                jaxrpc.jar
                log4j-1.2.8.jar
                log4j.properties
                mail-1.4.jar
                saaj.jar
                wsdl4j-1.5.1.jar

 

 

 

你可能感兴趣的:(Web,service,axis)