Axis框架开发web service

Axis框架开发web service

1.       搭建axis环境

l         建立自己的web工程bookstore

l         把当前目录下的Axis.rar解压缩到一个文件夹,这里假设你解到C:/axis,C:/axis/webapps/axis/WEB-INF/lib目录下的所有.jar文件复制到你的这个web应用程序的WEB-INF/lib下,再把C:/axis/webapps/axis/WEB-INF目录下的web.xml复制到你的web应用程序的WEB-INF下。这个步骤相当于在你的web应用程序中配置了Axis,若要集成spring则需要将当前目录下的lib/spring.jar复制到你的这个web应用程序的WEB-INF/lib,以支持spring集成.

2.       配置环境变量

将当前目录下的lib文件夹下的所有文件复制到d:/lib,修改环境变量CLASSPATH,在后边加上下边这一段:

d:/lib/axis.jar;d:/lib/jaxrpc.jar;d:/lib/commons-logging-1.0.4.jar;d:/lib/commons-discovery-0.2.jar;d:/lib/jaxrpc.jar;d:/lib/commons-logging-1.0.4.jar;d:/lib/saaj.jar;d:/lib/wsdl4j-1.5.1.jar;

3.       建立服务类

l         图书实体类:Book

package com.bookstore.model;

 

public class Book {

     

      private String name;

      private String ISDN;

      private String author;

     

      public String getAuthor() {

           return author;

      }

      public void setAuthor(String author) {

           this.author = author;

      }

      public String getISDN() {

           return ISDN;

      }

      public void setISDN(String isdn) {

           ISDN = isdn;

      }

      public String getName() {

           return name;

      }

      public void setName(String name) {

           this.name = name;

      }

}

 

l         业务逻辑类:BookService

package com.bookstore.service;

 

public class BookService {

           public void printBook(com.bookstore.model.Book book){

          System.out.println("name:"+book.getName());

           System.out.println("ISDN:"+book.getISDN());

           System.out.println("author:"+book.getAuthor());

      }

 

}

4.       创建deploy.wsdd

在工程的WEB-INF下创建文件deploy.wsdd,编写deploy.wsdd发布文件,typeMapping定义book类的序列化配置

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

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

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

  <parameter name="className" value="com.bookstore.service.BookService"/>

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

  <typeMapping encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

    qname="ns1:Book"

    languageSpecificType="java:com.bookstore.model.book.Book"

    serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"    deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

    name="Book"/>

</deployment>

5.       生成server-config.wsdd

利用deploy.wsdd生成server-config.wsdd(axis的配置文件),无论deploy.wsdd存放于什么位置,生成的server-config.wsdd都存在于localhost:8080/bookstore/WEB-INF

java org.apache.axis.client.AdminClient -lhttp://localhost:8080/bookstore/services/AdminService deploy.wsdd

6.       生成stub client

生成文件包括:

Book.java,

BookService_PortType.java

BookServiceService.java

BookServiceServiceLocator.java

BookServiceSoapBindingStub.java

具体用法参考第6

 

java org.apache.axis.wsdl.WSDL2Java http://localhost:8080/bookstore/services/BookService?wsdl  -p com.bookstore.client

7.       编写客户端代码访问服务

package com.bookstore.test;

 

public class BookServiceTest {

 

public static void main(String[] args){

try {

com.bookstore.client.Book book=new com.bookstore.client.Book();

book.setName("读者");

book.setISDN("ISO9001-4532d-107-8970");

book.setAuthor("fool");

com.bookstore.client.BookServiceService bookService=new com.bookstore.client.BookServiceServiceLocator();

com.bookstore.client.BookService_PortType client=bookService.getBookService();

client.printBook(book);

 

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

8.       集成spring

l         要是web服务的类能够和spring环境一起工作,有一些额外的工作要做,web服务的提供类必须有spring管理,因此在调用web服务时需要从web应用环境中去的代表服务类的bean,完成这一步用到了一个开放源代码组织提供的几个类http://opensource.atlassian.com/projects/spring/browse/SPR-371
SpringAxisServlet.java,SpringBeanProvider.java,SpringBeanRPCPrvider.java
SpringAxisServlet:
继承自AxisServlet,用来加载springcontextSpringBeanProvier运行的前提
SpringBeanProvider
:用于获取spring context中的bean
SpringBeanRPCProvider
:调用SpringBeanProvider来获得通过Spring IoC注入后的web 服务bean,这三个类在当前目录下的spring-axis文件夹下可以找到

l         将上述三个类文件复制到你的web工程中

l         建立spring业务类SpringService

package com.bookstore.service;

 

public class SpringService {

 

      private String user;

 

      public void callUser(){

           System.out.println("Hi,"+user);

           System.out.println("Date:"+new java.util.Date());

      }

      public String getUser() {

           return user;

      }

      public void setUser(String user) {

           this.user = user;

      }         

}

l         WEB-INF下建立spring配置文件AxisServlet-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC

    "-//SPRING//DTD BEAN//EN"

    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

      <bean

      name="SpringService"

      class="com.bookstore.service.SpringService"

     >

            <property name="user">

                <value>Wang Gai</value>

          </property>

      </bean>

</beans>

l         web.xml中需要加入如下配置:

  <servlet>

    <servlet-name>AxisServlet</servlet-name>

    <display-name>Apache-Axis Servlet</display-name>

    <servlet-class>

        com.bookstore.axis.SpringAxisServlet

    </servlet-class>

    <init-param>

           <param-name>contextConfigLocation</param-name>

           <param-value>/WEB-INF/applicationcontext.xml</param-value>

      </init-param>

  </servlet>

l         deploy.wsdd配置如下:

<service name="SpringTest"  provider="Handler" style="rpc">

  <parameter name="handlerClass" value="com.bookstore.axis.SpringBeanRPCProvider"/>

  <parameter name="springBean" value="SpringService"/>

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

 </service>

l         生成server-config.wsdd

java org.apache.axis.client.AdminClient -lhttp://localhost:8080/bookstore/services/AdminService deploy.wsdd

l         生成stub client

java org.apache.axis.wsdl.WSDL2Java http://localhost:8080/bookstore/services/SpringService?wsdl -p com.bookstore.client.spring

l         编写客户端程序测试服务

package com.bookstore.test;

 

public class SpringServiceTest {

 

      public static void main(String[] args){

           try {

                 com.bookstore.client.spring.SpringServiceService springServiceService=new com.bookstore.client.spring.SpringServiceServiceLocator();

                 com.bookstore.client.spring.SpringService_PortType client=springServiceService.getSpringService();

                 client.callUser();

           } catch (Exception e) {

                 // TODO Auto-generated catch block

                 e.printStackTrace();

           }

      }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值