现在的位置: 首页 > 综合 > 正文

Axis1.4学习笔记

2013年06月08日 ⁄ 综合 ⁄ 共 5961字 ⁄ 字号 评论关闭

1.     将Axis项目中,webapps目录下的axis文件夹部署到Tomcat的webapps目录下

 

2.     我们可以看到,axis/WEB-INF/web.xml中配置信息大致如下:

       <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>

        
-->

 

3.     编写WS服务端

public
class HelloServer
{

      
public
HelloServer()

       {

             
System.
out.println("--构造函数--");

       }

      
public
int
add(
int a, int b)

       {

             
return a + b;

       }

      
public String sayHello(String
name)

       {

             
return
"Hello,
"
+ name +
"!";

       }

}

方式1:最简单的方法

(1)   直接将HelloServer.java文件拷贝到Tomcat/webapps/axis目录下,然后改名为:

HelloServer.jws

注意:      a>
HelloService.java
不能放在pageage中,

             b>有可能需要将jdk/lib/tools.jar放到axis/WEB-INF/lib目录下

(2)   可以到浏览器中输入:http://localhost:8088/axis/HelloServer.jws?wsdl查看部署信息

方式2:最常用的方法

(1)   将HelloServer.java放到pageage:cn.koma.ws包中(可以新建一个普通的java项目,然后将axis的一些相关jar导入进来)

(2)   编写deploy.wsdd描述文件:

<deployment xmlns="http://xml.apache.org/axis/wsdd/"

        
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

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

                  
<parameter name="className"                       value="cn.koma.ws.HelloServer" />

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

                  
<!--
这个service的范围:request(默认)、session、application
-->

                  
<parameter name="scope"                               value="application" />

        
</service>

</deployment>

(3)   通过axis提供的客户端工具org.apache.axis.client.AdminClient,将HelloServer部署到Tomcat服务器,默认情况下axis认为axis目录是:http://localhost:8080/axis,可以传递-p
<port>指定其它端口

 

表示:ws部署描述文件是:deploy.wsdd,服务器端口是:8088

运行后,可以看到Tomcat/webapps/axis/WEB-INF目录下多了一个server-config.wsdd文件,打开后可以看到我们刚才自己写的deploy.wsdd的内容也包含在了其中。

(4)   将编译后的HelloServer.class放到Tomcat/webapps/axis/WEB-INF/classes目录下

(5)   在浏览器中输入:http://localhost:8088/axis/services/HelloServer?wsdl

4.     编写客户端访问WS服务

package
cn.koma.ws;

import
javax.xml.namespace.QName;

import
org.apache.axis.client.Call;

import
org.apache.axis.client.Service;

public
class
HelloServerClient {

        
public
static
void
main(String[] args) {

                  
try
{

                           
String endpoint =
"http://localhost:8088/axis/services/HelloServer";

                           
Service service =
new
Service();

                           
Call call = (Call)service.createCall();

                           
call.setTargetEndpointAddress(
new
java.net.URL(endpoint));

                           
call.setOperationName(
new
QName(
"http://ws.koma.cn",
"sayHello"));

                           
String rtn = (String)call.invoke(
new
String[]{
"zhaoql"});

                           
System.
out.println("Sent
'zhaoql', /ngot '"
+rtn+"'");

                  
}
catch
(Exception e) {

                           
e.printStackTrace();

                  
}

        
}

}

运行后结果 :

Sent
'zhaoql',

got 'Hello,
zhaoql!'

5.     卸载WS服务(实际上是删除axis/WEB-INF/server-config.wsdd文件中HelloServer的相关描述)

(1)   编写undeploy.wsdd文件

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

 <service name="HelloServer"/>

</undeployment>

(2)   利用AdminClient工具执行卸载操作

 

(3)   执行成功后,可以看到server-config.wsdd中已经没了刚才的HelloServer的描述

6. org.apache.axis.client.AdminClient常用的方法:

(1)   发布ws服务到服务器端(实际上是修改server-config.wsdd文件)

deploy.wsdd –p 8088

(2)   从服务器取消ws服务,参数同上

undeploy.wsdd -p 8088

(3)   查看服务器所提供的所有的ws服务列表

list   -p 8088

(4)将ws部署到指定的WEB项目(要先将.jar及web.xml拷贝到自己的项目中来),默认是:(http://localhost:8080/axis/servlet/AxisServlet)

deploy.wsdd –p 8088 –s MyWebProject/servlet/AxisServlet

7.     扩展知识点6,可以查看ort.apache.axis.utils.Options的构造函数àgetUrl()方法à

 

(1)   Axis支持两种协议:http(默认)、file       
(-l 
参数指定http协议,-f 参数指定file协议)

(2)   用 –l 或者 –f  参数指定协议等信息,如果为空,则默认是http协议,
如果指定了-l或者-f

则可以从参数中得到:主机(host)、端口(port)、AxisServlet的URL(servlet)、协议(protocol)

(3)   –l参数可以指定AxisServlet的完整URL,默认情况下是:http://localhost:8080/axis/servlet/AxisServlet

例如可以:deploy.wsdd -l http://localhost:8088/AxisTestWeb/servlet/AxisServlet

(4)   如果 –h 参数不为空,则可以替换掉上面 –l 或者 –f
得到的host

如果 –p 参数不为空,则可以替换掉上面 –l 或者 –f
得到的port

如果 –s 参数不为空,则可以替换掉上面 –l 或者 –f
得到的servlet

(5)   如果host为空,则使用默认的host
(localhost)

如果port为空,则使用默认的port(8080)

如果servlet为空,则使用默认的servlet(axis/servlet/AxisServlet)

如果protocol为空,则使用默认的protocol
(http)

(6)    

8.      

抱歉!评论已关闭.