love fish大鹏一曰同风起,扶摇直上九万里

常用链接

统计

积分与排名

friends

link

最新评论

AXIS学习(1)(转)

1.axis服务器包的校验。
  到http://ws.apache.org/下载axis后,解压,拷贝axis到tomcat的webapps目录下。启动tomcat,运行http://localhost:8080/axis
  点击“validation”,程序会检测少的包,并提示下载路径。我目前包含的包如下:
    axis.jar;                              
 axis-ant.jar;                          
 axis-schema.jar;                       
 commons-discovery-0.2.jar;             
 commons-httpclient-3.0-rc2.jar;        
 commons-logging-1.0.4.jar;             
 jaxrpc.jar;                            
 log4j-1.2.8.jar;                       
 saaj.jar;                              
 wsdl4j-1.5.1.jar;                      
 activation.jar;                        
 mail.jar    

2.环境变量的配置
  其实运行axis是不用配置环境变量的。但有的时候需要利用axis提供的一些工具,产生一些文件,需要应用很多包,利用ClassPath就比较方便了。
  AXIS_HOME:
  AXIS_LIB:
  AXISCLASSPATH:
 
3.把axis集成 到项目中
  a、把上面所提到的包拷贝到项目相应的lib目录中
  b、修改web.xml文件,增加所需的servlet配置
  <servlet>
  <servlet-name>AxisServlet</servlet-name>
  <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
 </servlet>

 <servlet>
  <servlet-name>AdminServlet</servlet-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>
  <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>

 <session-config>
  <session-timeout>5</session-timeout>
 </session-config>

 <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>
  
4.服务发布(jws文件发布和定制发布)
  a、jws文件发布
  在web应用程序目录下,新建一个jws文件,例如:Hello.jws文件(其实就是个java文件,不包含包名)。 
  public class Hello {
 public String hello(String name){
  if(name==null){
   name="";
  }
  return "Hi,你好 "+name+",欢迎来到Web服务世界!";
 }
  }
  这样就可以直接查看hello服务相应的wsdl了:http://localhost:8080/testaxis/hello.jws?wsdl
 
  b.定制发布。
  定制发布,依赖一个server-confif.wsdd文件。
  在web-inf目录下新建一个deploy.wsdd文件,设置发布的服务,例如:
  <deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="city" provider="java:RPC">
      <parameter name="className" value="yhp.test.axis.service.CityService"/>
      <parameter name="allowedMethods" value="*"/>
    </service>
  </deployment>
 
  利用axis提供的工具,就可以生成server-confif.wsdd文件了:
  java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
  在运行过程中发现:如果没有把axis自带的应用发布到服务器上,运行时会提示404的错误,未发现axis/servlet/AxisServlet。

5.客户端调用
        String endpoint = "http://localhost:" + "8080"
    + "/testaxis/services/city";  //以定制发布方式,如果是jws文件,则endpoint为相应的jws文件

  Service service = new Service();
  Call call = (Call) service.createCall();
  call.setTargetEndpointAddress(new java.net.URL(endpoint));
  call.setOperationName("getZip");

  String res = (String) call.invoke(new Object[] {""});//object数组为远程方法的参数 

  System.out.println(res);
  
6.生成客户端stub相关类
   Axis提供了工具生成客户端stub相关的类,即通过wsdl产生stub。
   java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java http://localhost:8080/testaxis/services/city?wsdl

posted on 2006-05-23 17:05 liaojiyong 阅读(321) 评论(0)  编辑  收藏 所属分类: Mixture


只有注册用户登录后才能发表评论。


网站导航: