`
jayyanzhang2010
  • 浏览: 371643 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

用Axis开发基于Java的Web服务

 
阅读更多

   介绍一个比较简单实用的基于Java的SOAP引擎——Apache组织推出的Axis——的安装、配置和应用开发方法,希望对有兴趣做基于Java的Web Services应用开发的朋友有所帮助。

Axis简介

  Axis是Apache组织推出的SOAP引擎,Axis项目是Apache组织著名的SOAP项目的后继项目,目前最新版本是采用Java开发的1.1版本,C++的版本正在开发之中。Axis v1.1软件包可以从http://ws.apache.org/axis/dist/1_1/下载得到。

Axis的安装

  应用Axis开发Web Services,你需要有一个支持Servlet的服务器引擎,比如广为人知的Tomcat(Tomcat也是由Apache组织所提供的,目前的最新版本为4.1.24,下载地址为http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.24/)。在此之前当然你机器必须已经装好了JDK1.3以上的版本,当安装好Tomcat之后,只需将下载的Axis软件包解压缩,将其中的“webapps”目录下的“axis”目录整个拷贝到Tomcat安装目录下的“webapps”目录下即可。

Axis的配置

  Axis基于Java开发,可以部署于多种操作系统,使用前需要配置一系列的系统变量,在此假定你已经在本机上装好了Tomcat 4.0以上的版本,需要配置的系统变量如下表所示:

CATALINA_HOME
C:\Tomcat_4_1

(此处应为Tomcat的安装位置,注意路径名中不要有空格)

AXIS_HOME
%CATALINA_HOME%\webapps\axis

AXIS_LIB
%AXIS_HOME%\lib

AXISCLASSPATH
%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar; %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar; %AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar; %AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar

注意:这里的包不全,包名也有错!包名应该是带版本号的!

  如果你不愿做这么繁琐的类路径设置,可以直接将axis软件包中“lib”目录下的所有.jar文件加入到系统环境变量CLASSPATH中即可。

Axis的测试

  安装配置完毕后,应测试一下是否Axis可以正确运行了。

  启动Tomcat服务器,在浏览器中访问http://localhost:8080/axis/happyaxis.jsp,如果页面显示有错误,则需要回头检查一下相关配置是否正确,如果浏览页面能正确显示出系统组件、属性等参数配置信息,则表示安装成功,如下图

 

下面开始写一个有服务器端和客户端的demo:

 

1、   服务器端
1.1、创建一个Web工程WS_Test

1.2、把axis相关jar包考入工程的lib文件夹下(jar包见附件)
(注意lib文件夹应该在axis根目录下!从官网下的1.4的包,在应用中会报少包,我又加了四个)
1.3、配置web.xml,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!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>





1.4、在src下创建对外提供调用的service类test_1.Ws_1.java

内容如下:

package test_1;



public class Ws_1 {

      

       public String function_1(String str_1){

             

              System.out.println(" *** service 被调用了 ***  接收参数:"+str_1);

              String str =" scorpio  :  " + str_1+"  is ok ";  //接到客户端请求,然后处理

        //… …

              return str ;      //最后把结果返回客户端

             

       }



}

1.5、修改tomcat下的server.xml

本人server.xml文件路径为D:/apache-tomcat-5.5.26/conf/server.xml


在</Host>上一行增加或修改为
<Context path='/WS_Test' docBase='D:/workspace/WS_Test/WebRoot' debuge='0' reloadable='true'/>


其中:/WS_Test 为上下文的根,在这里用工程名命名(可随意)
D:/workspace/WS_Test/WebRoot 为工程web所在的路径


1.6、在WEB-INF下创建deploy.wsdd文件,内容如下

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

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

  <parameter name="className" value="test_1.Ws_1"/>

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

</service>

</deployment>



注:Say_Hello_Service,为service的名字
test_1.Ws_1,为Say_Hello_Service对应的类


1.7、在WEB-INF下创建deploy.bat文件,内容如下

set Axis_Lib=D:/workspace/WS_Test/WebRoot/WEB-INF/lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

set Axis_Servlet=http://localhost:7777/WS_Test/servlet/AxisServlet

%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd

pause



其中D:/workspace/WS_Test/WebRoot/WEB-INF/lib对应改为自己的工程lib所在的路径

http://localhost:7777/WS_Test/servlet/AxisServlet中的7777改为 自己的端口号



注:这里特别注意,在tomcat中一定要配置工程上下文的根(我这里用的是工程名:WS_Test)


1.8、先启动tomcat,然后运行刚创建的deploy.bat
执行完毕后,WEB-INF下会多出一个server-config.wsdd文件
1.9、在浏览器地址栏里输入http://localhost:7777/WS_Test/servlet/AxisServlet(7777改成自己tomcat的端口号)

如有如下内容 则服务器端 编码完毕

•Say_Hello_Service (wsdl)
◦function_1






2、   客户端
2.1、建立一个java工程  WS_Test_client
2.2、工程下文件夹WS_Test_client下建立一个lib文件夹

把axis相关jar包考入工程的lib文件夹下(jar包见附件)

2.3、工程文件夹WS_Test_client下建立一个test_1_client文件夹

2.4、工程文件夹WS_Test_client下直接创建wsdl2java.bat文件
内容如下
set Axis_Lib=D:/workspace/WS_Test_client/lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:/workspace/WS_Test_client/src
set Package=test_1_client
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java –p%Package% -o%Output_Path%  http://localhost:7777/WS_Test/services/Say_Hello_Service?wsdl
Pause


其中 D:/workspace/WS_Test_client/lib 为客户端java工程lib路径
     D:/workspace/WS_Test_client/ test_1_client 存放生成文件路径
test_1_client   生成的类的包名


2.5 运行wsdl2java.bat文件
前提:服务器端服务已开启
运行完毕后 会多出
Say_Hello_ServiceSoapBindingStub.java
Ws_1.java
Ws_1Service.java
Ws_1ServiceLocator.java
等文件
2.6、创建调用服务器service的类test_1_client. Main.java


package test_1_client;



public class Main {



       /**

        * @param args

        */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

             

              Ws_1ServiceLocator local = new Ws_1ServiceLocator();

              try{

                     Ws_1 ws = local.getSay_Hello_Service();

                     String str = ws.function_1("heihei"); //调用服务器端方法

                     System.out.println(str);

              }catch(Exception e){

                    

                     e.printStackTrace();

              }

              }



       }

   

2.7、运行test_1_client. Main.java 输出台输出服务器端返回结果即调用服务器端成功

 

0
2
分享到:
评论

相关推荐

    用Axis开发基于Java的Web服务.docx

    用Axis开发基于Java的Web服务.docx

    基于java的开发源码-Web服务框架 Apache Axis.zip

    基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的...

    Java Web服务开发

    作者简介:Ramesh Nagappan是Sun Java中心的Enterprise Java架构师,拥有13年的从业经验,擅长于设计和实现基于Java、XML和COBRA的分布式计算体系结构,可适用于Internet应用程序、企业消息交换和Web服务。...

    axis开发资料

    用Axis开发基于Java的Web服务.doc AXIS实现Web服务深入篇.TXT AXIS学习笔记.txt WebService之axis的复杂对象传输方案.txt 使用Apache Axis部署 Web服务时的常见问题及其解决方法.txt 使用Axis开发Web Service程序....

    java基于Axis2调用C#开发的web service获取xml结果

    java基于Axis2调用C#开发的web service获取xml结果

    AxisDemo webservices java

    基于axis开发的java webservices Demo !可直接使用

    Eclipse下基于Axis2的Web Service平台搭建与使用

    一个完整的web项目 基于axis2的web服务开发 包含完整代码和文档以及操作指南 请勿随意转载上传 所用到的其他技术包括但不限于:java web、mysql、Axis2、Html5、CSS2等 所用到的工具包括但不限于:eclipse、 Photo...

    java webservice 基于axis来开发的

    这个文件是用java来开发webservice ,它基于axis的 值得大家学习一下

    基于Tomcat5_0和Axis2开发Web Service应用实例

    基于Tomcat5_0和Axis2开发Web Service应用实例,上面的例子简单实用

    web service 天气服务

    java基于AXIS平台下开发的在线调用天气服务。要求掌握WSDL,JAVA,AXIS的技术。

    axis-bin-1_4.zip

    支持WSDL。...在EJB方面提供把EJB作为Web服务的访问途经。 基于Servlet的HTTP传输。 基于JMS的传输。 独立的服务器(但需要HTTP 服务器和Servlet容器支持)。 提供客户端、服务器端相关应用程序的样例。

    axis2 1.6.3 API docs ( CHM格式 )

    支持开发 Axis2 的动力是探寻模块化更强、灵活性更高和更有效的体系结构,这种体系结构可以很容易地插入到其他相关 Web 服务标准和协议(如 WS-Security、WS-ReliableMessaging 等)的实现中。 Apache Axis2 是Axis...

    JAVA上百实例源码以及开源项目

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    JAVA上百实例源码以及开源项目源代码

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    java开源包11

    j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF...

    java开源包6

    j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF...

Global site tag (gtag.js) - Google Analytics