webService(Axis1.4)

开发环境:myeclipse6.0+tomcat 5.5+JDK 1.4+Axis1.4

1:首先要先到网站上去下载 Axis1.4 架包,最好下载axis-src-1_4.tar.gz。然后要将这个架包lib下面所有的文件复制到项目lib下面,还要将webapps\axis\WEB-INF\下面的web.xml复制到项目的WEB-INF\下面。

这里主要介绍Axis1.4 的Stubs 方式

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <display-name>Apache-Axis</display-name>
    
    <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>
 -->

    <session-config>
        <!-- Default to 5 minute session timeouts -->
        <session-timeout>5</session-timeout>
    </session-config>

    <!-- currently the W3C havent settled on a media type for WSDL;
    http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft
    for now we go with the basic 'it's XML' response -->
  <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>

  <welcome-file-list id="WelcomeFileList">
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jws</welcome-file>
  </welcome-file-list>

</web-app>

 以上这个是web.xml文件

2:接着 在项目的WEB-INF下面配置一个server-config.wsdd。下面是WSDD文件的配置

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>   
   <service name="axisTest" provider="java:RPC">
        <parameter name="className" value="cn.com.self.axisWebservice.axisTest"/>//类的路径
        <parameter name="allowedMethods" value="*"/>
    </service>
<transport name="http">
<requestFlow>
    <handler type="URLMapper"/>
</requestFlow>
</transport>
</deployment>

 3:下面我们写一个.java 文件

package cn.com.self.axisWebservice;

public class axisTest {
	public String Hello(String name){
		return "欢迎使用axisWebservice"+name;
	}
}

4:在项目的根目录下建一个java2wsdl文件夹,然后在其下面创建一个build.xml文件,具体内容如下

<?xml version="1.0" encoding="UTF-8"?>
<project name="Generate WSDL from JavaBeans as Web Services" default="j2w-all" basedir=".">
    <property name="build.dir" value="../../WebRoot/WEB-INF/classes"/>
      <property name="axis.dir" location="D:/axis/axis-1_4"/>
      <path id="classpath.id">
             <fileset dir="${axis.dir}/lib">
                    <include name="*.jar"/>
             </fileset>   
    <pathelement location="${build.dir}"/>
      </path>
<taskdef name="axis-java2wsdl" classname="org.apache.axis.tools.ant.wsdl.Java2WsdlAntTask"
    loaderref="axis" >
        <classpath refid="classpath.id"/>
</taskdef>
       <target name="j2w-all">
          <antcall target="j2w-JavaBeanWS"/>       
       </target>
    <target name="j2w-JavaBeanWS">
        <axis-java2wsdl    classname="cn.com.self.axisWebservice.axisTest" classpath="${build.dir}"
                    methods="Hello"
                        output="axisTest.wsdl"
                        location="http://localhost:8080/WS-self/services/axisTest"
                        namespace="http://localhost:8080/WS-self/services/axisTest"
                        namespaceImpl="http://localhost:8080/WS-self/services/axisTest">        
          </axis-java2wsdl>
    </target>
</project>

 然后用ant构建,则会生成一个AxisTest.wsdl文件

5:在项目的上新建一个源文件夹(注意不是文件夹),然后里面同样也创建一个build.xml。具体内容如下

<?xml version="1.0" encoding="UTF-8"?>
<project name="wsclient" default="all" basedir=".">
<property name="axis.home" location="D:/axis/axis-1_4"/>
<property name="options.output" location="../wsdl2java"/>
<path id="axis.classpath">
    <fileset dir="${axis.home}/lib">
      <include name="**/*.jar"/>
    </fileset>
</path>
<taskdef resource="axis-tasks.properties" classpathref="axis.classpath" />
<target name="-WSDL2Axis" depends="init">
    <mkdir dir="${options.output}"/>
    <axis-wsdl2java output="${options.output}" url="${options.WSDL-URI}" verbose="true"/>
</target>
<target name="init">
    <echo>Warning: please update the associated WSDL file(s) in the folder wsdl before running the target!</echo>
    <echo>Warning: Just run the target(s) related with your developing work!</echo>
    <echo></echo>
</target>
<target name="all">
        <antcall target="axisTest"/>        
</target>
<target name="axisTest">
    <antcall target="-WSDL2Axis">
      <param name="options.WSDL-URI" location="../src/java2wsdl/axisTest.wsdl"/>
    </antcall>
</target>         
</project>

 然后ant构建会生成我们所需要的文件。

6:新建一个类 main方法来调用,如下:

AxisTestServiceLocator Service= new AxisTestServiceLocator();
		AxisTest port = Service.getaxisTest();
		String str=port.hello("张三");
		System.out.print(str);

然后 运行如果后台输出“欢迎使用axiswebservice张三” 就表示成功了

猜你喜欢

转载自alex-tao.iteye.com/blog/1867901