在Axis上部署WebService
上文提到了在Axis中用JWS即时编译、部署jws文件为WebService,虽然很简便但是十分不灵活,它不支持class,不支持jar,甚至不支持带包的文件,因此主要使用wsdd文件来定制部署。下面是一个例子:
这是课本上的一个例子的wsdd文件,
-
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
-
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
-
<service name="SearchOrder" provider="java:RPC">
-
<parameter name="className" value="org.yoyo.service.SearchOrder" />
-
<parameter name="allowedMethods" value="*" />
-
</service>
-
<beanMapping qname="mySearch:Order" xmlns:mySearch="urn:BeanService" languageSpecificType="java:org.yoyo.bean.Order" />
-
<beanMapping qname="mySearch:Customer" xmlns:mySearch="urn:BeanService" languageSpecificType="java:org.yoyo.bean.Customer" />
-
</deployment>
执行时通过控制台运行命令java org.apache.axis.client.AdminClient deploy.wsdd 来部署服务,成功后打开http://localhost:8080/axis/servlet/AxisServlet会看到部署的服务。
参数意思写得很明显了,在此不再细表。
在Tomcat中部署Axis搭建SOAP环境
几个下载地址:
- Axis:http://www.apache.org/dyn/closer.cgi/ws/axis/1_4
- XML解析器xerces-j:http://archive.apache.org/dist/xml/xerces-j/
- JavaMail API:http://java.sun.com/products/javamail/downloads/index.html
- JavaBeans Activation Framework (JAF):http://java.sun.com/javase/technologies/desktop/javabeans/jaf/downloads/index.html
搭建步骤:
- 将Axis的压缩包解压后webapps目录下的axis目录拷贝到Tomcat的webapps目录下,
- 将xerces-j解压后得到的jar包放入Tomcat/webapps/axis/WEB-INF/lib目录下,
- 如果要支持JWS(临时发布,由Axis自动编译部署,即下文中用到的),要将jdk的tools.jar也拷贝进该目录。
- 同时配置环境变量,CLASSPATH中加上该目录下的所有jar包。
- 将JavaMail和JAF解压后的jar包拷到JDK的lib目录下和tomcat的lib目录下。
- 启动Tomcat,此时应可以看到axis的目录并能正常访问。
- 下面编写一个WebService程式HelloWorld.jws,并将之放入axis的目录下(会被axis自动编译部署):
- 编写测试程式,在eclipse中创建一个项目,导入axis的lib目录下的所有jar包,新建TestClient类,代码如下:
-
import java.net.MalformedURLException;
-
import java.net.URL;
-
import java.rmi.RemoteException;
-
-
import javax.xml.rpc.ServiceException;
-
-
import org.apache.axis.client.Call;
-
import org.apache.axis.client.Service;
-
-
public class TestClient {
-
-
String url = "http://localhost:8080/axis/HelloWorld.jws";
-
Service service = new Service();
-
Call call = (Call) service.createCall();
-
call.setOperationName("sayHelloWorld");
-
}
-
-
try {
-
new TestClient().doTest("YOYO");
-
e.printStackTrace();
-
e.printStackTrace();
-
} catch (ServiceException e) {
-
e.printStackTrace();
-
}
-
}
-
-
}
-
- 运行该程式,若能得到正确的运行结果("YOYO, Hello World!")即说明成功搭建了一个SOAP环境。