`
sharis1987
  • 浏览: 12027 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

axis1.4集成web项目简单应用

阅读更多

刚开始接触axis1.4,参考了一下网站上的例子,也是云里雾里,所以系统的记录下自己搭建axis项目及应用的全过程。

1.准备环境

      1)官网上下载axis-bin-1_4.zip,官网地址http://www.eu.apache.org/dist/axis/axis/java/1.4/

      2)下载完成后,解压,将解压文件放到磁盘目录中,我这里放置的目录为D:\software\

      3)配置环境变量

            AXIS_HOME=D:\software\axis-1_4

            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;

 

           注意检查AXISCLASSPATH中jar包的名字,看是否带有版本,名字一定要lib中的jar包名字对应上

 

2.构建web工程

      新建web工程,将%AXIS_HOME%\lib下的jar包引入到工程中,在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>

 

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

    

3.编写服务端代码,这里贴上我写的代码

         两个实体类

 

Book.java:

package com.axis.serviceside.entity;

 

import java.io.Serializable;

 

public class Book implements Serializable{

 

private String bookName;

private float price;

public String getBookName() {

return bookName;

}

public void setBookName(String bookName) {

this.bookName = bookName;

}

public float getPrice() {

return price;

}

public void setPrice(float price) {

this.price = price;

}

 

 

 

 

}

*************************************************************************************************

Person.java:

package com.axis.serviceside.entity;

 

import java.io.Serializable;

 

public class Person implements Serializable{

 

private String name;

private Book book;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Book getBook() {

return book;

}

public void setBook(Book book) {

this.book = book;

}

 

 

 

 

}

****************************************************************************************************************

一个服务类:

PersonInfoService.java:

 

 

 package com.axis.serviceside.service;

 

import com.axis.serviceside.entity.Book;

import com.axis.serviceside.entity.Person;

 

public class PersonInfoService {

 

 

public String getPersonInfo(){

Person p = new Person();

p.setName("jiangxl");

Book b = new Book();

b.setBookName("jiangcheng");

b.setPrice(3.2f);

 

p.setBook(b);

return p.getName()+":"+p.getBook().getBookName();

}

 

public String getPersonInfo(String name){

Person p = new Person();

p.setName(name);

Book b = new Book();

b.setBookName("jiangcheng");

b.setPrice(3.2f);

 

p.setBook(b);

return p.getName()+":"+p.getBook().getBookName();

}

 

public String getPersonInfo(Person p){

Book b = new Book();

b.setBookName("jiangcheng");

b.setPrice(3.2f);

p.setBook(b);

return p.getName()+":"+p.getBook().getBookName();

}

 

}

 

4.在web-info文件夹下新建deploy.wsdd文件

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

 

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

 

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

 

<parameter name="className"

value="com.axis.serviceside.service.PersonInfoService" /> <!-- 对应 PersonInfoService的全路径(所在包+类名)-->

 

<parameter name="allowedMethods" value="getPersonInfo" /> <!-- 允许发布的方法,为*则发布类中定义的全部public方法,如果指定多个可使用,隔开 -->

<beanMapping qname = "myNS:Person" xmlns:myNS="urn:PersonInfo"

languageSpecificType="java:com.axis.serviceside.entity.Person" /> <!--复杂参数传递所需,该例子中因PersonInfoService第三个方法getPersonInfo(Person p) 请求参数为一个对象,需要序列化-->

 

</service>

 

</deployment>

 这里还要多解释下beanMapping 

<beanMapping  qname="前缀:本地名" xmlns:前缀=“urn:名称空间” languageSpecificType="java:自定义类型的全路径(这里就是Person类的全路径)"

 

5.发布项目

    将项目发布到tomcat路径下,我这里发布到了D:\software\apache-tomcat-7.0.59\wtpwebapps路径下,运行tomcat,然后打开cmd,进入发布到项目路径的WEB-INFO目录下,我进入的是D:\software\apache-tomcat-7.0.59\wtpwebapps\mywebapp\WEB-INF,mywebapp是我的项目名称,运行命令

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8081/mywebapp/services/BusinessService deploy.wsdd

这是你会发现在web-info下生成了server-config.wsdd文件,刷新http://localhost:8081/mywebapp/services/businessService?wsdl看是否能打开,打开说明发布成功了。

 

6.编写客户端代码

1)调用无参方法

package com.axis.client;

 

import java.net.URL;

 

import javax.xml.namespace.QName;

 

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.ser.BeanDeserializerFactory;

import org.apache.axis.encoding.ser.BeanSerializerFactory;

 

import com.axis.serviceside.entity.Book;

import com.axis.serviceside.entity.Person;

 

public class TestClient {

 

public static void main(String[] args) {

try {

String endPoint = "http://localhost:8081/mywebapp/services/businessService";  //

Service service = new Service();

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

call.setTargetEndpointAddress(new URL(endPoint));

 

//调用带有Person对象的getPersonInfo方法采用 开始

//QName qn = new QName("urn:PersonInfo", "Person");

//call.registerTypeMapping(Person.class, qn,

//new BeanSerializerFactory(

//

//Person.class, qn),

//

//new BeanDeserializerFactory(Person.class, qn));

//

//

//Person person = new Person();

//

//person.setName("Kiah Han");

////结束

 

call.setOperationName(new QName(

"http://service.serviceside.axis.com", "getPersonInfo"));

 

String ret = (String) call.invoke(new Object[] {});

System.out.println("Sent 'Hello!', got '" + ret + "'");

} catch (Exception e) {

e.printStackTrace();

}

}

}

 

 

************************************************************************************************************************

调用有参数方法,参数为string类型

package com.axis.client;

 

import java.net.URL;

 

import javax.xml.namespace.QName;

 

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.ser.BeanDeserializerFactory;

import org.apache.axis.encoding.ser.BeanSerializerFactory;

 

import com.axis.serviceside.entity.Book;

import com.axis.serviceside.entity.Person;

 

public class TestClient {

 

public static void main(String[] args) {

try {

String endPoint = "http://localhost:8081/mywebapp/services/businessService";  //

Service service = new Service();

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

call.setTargetEndpointAddress(new URL(endPoint));

 

//调用带有Person对象的getPersonInfo方法采用 开始

//QName qn = new QName("urn:PersonInfo", "Person");

//call.registerTypeMapping(Person.class, qn,

//new BeanSerializerFactory(

//

//Person.class, qn),

//

//new BeanDeserializerFactory(Person.class, qn));

//

//

//Person person = new Person();

//

//person.setName("Kiah Han");

////结束

 

call.setOperationName(new QName(

"http://service.serviceside.axis.com", "getPersonInfo"));

 

String ret = (String) call.invoke(new Object[] {"test"});

System.out.println("Sent 'Hello!', got '" + ret + "'");

} catch (Exception e) {

e.printStackTrace();

}

}

}

 

 

*******************************************************************************************************************

调用有参数方法,参数类型为对象

package com.axis.client;

 

import java.net.URL;

 

import javax.xml.namespace.QName;

 

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.ser.BeanDeserializerFactory;

import org.apache.axis.encoding.ser.BeanSerializerFactory;

 

import com.axis.serviceside.entity.Book;

import com.axis.serviceside.entity.Person;

 

public class TestClient {

 

public static void main(String[] args) {

try {

String endPoint = "http://localhost:8081/mywebapp/services/businessService";  //

Service service = new Service();

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

call.setTargetEndpointAddress(new URL(endPoint));

 

//调用带有Person对象的getPersonInfo方法采用 开始

QName qn = new QName("urn:PersonInfo", "Person");

call.registerTypeMapping(Person.class, qn,

new BeanSerializerFactory(

 

Person.class, qn),

 

new BeanDeserializerFactory(Person.class, qn));

 

 

Person person = new Person();

 

person.setName("Kiah Han");

//结束

 

call.setOperationName(new QName(

"http://service.serviceside.axis.com", "getPersonInfo"));

 

String ret = (String) call.invoke(new Object[] {person});

System.out.println("Sent 'Hello!', got '" + ret + "'");

} catch (Exception e) {

e.printStackTrace();

}

}

}

 

这样一个简单的基于axis1.4方法的webservice项目就开发完成了

 

 

 

 

 

 

 

            

   

       

 

分享到:
评论

相关推荐

    axis1.4 spring3.0 集成 实现 web service

    axis1.4 spring3.0 集成 实现 web service 服务端, axis1.4 客户端认证,授权,访问日志记录,集成spring 解决 PHP 调用web service 无法认证,和解析soap 模板

    发布webService服务接口与spring整合教程

    在网上找了很久的资料,接口已经跟客户对接,特编写了代码文档和附带jar包,并含其他网站的参考地址,注意jdk环境要1.6或以上版本

    springmvc和mybatis集成全部jar包(全)

    springmvc4.3.3和mybatis3.4.1集成最新全部jar包,还包含了其他一些常用的jar包,很全,已经在项目中验证过。 lib/antlr-2.7.2.jar lib/aopalliance-1.0.jar lib/asm-3.3.1.jar lib/aspectjweaver-1.6.5.jar ...

    ActiveMQ消息服务器.rar

    1.ActiveMQ消息队列中间件 1.1.什么是ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。...CXF和Axis支持,以便ActiveMQ可以轻松地放入这些Web服务堆栈中以提供可靠的消息传递。

    MULE IN ACTION

    4.支持Axis或者Glue的Web Service. 5.灵活的部署结构[Topologies]包括Client/Server, P2P, ESB 和Enterprise Service Network. 6.与Spring 框架集成:可用作ESB 容器,也可以很容易的嵌入到Spring应用中. 7.使用...

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

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码...

    Mule是一个企业服务总线(ESB)消息框架

    4.支持Axis或者Glue的Web Service. 5.灵活的部署结构[Topologies]包括Client/Server, P2P, ESB 和Enterprise Service Network. 6.与Spring 框架集成:可用作ESB 容器,也可以很容易的嵌入到Spring应用中. 7.使用...

    activemq的windowns编译库、centos7编译库和mac编译库(含头文件和库文件)

    CXF和Axis支持,以便ActiveMQ可以轻松地放入这些Web服务堆栈中以提供可靠的消息传递 可以用作内存JMS提供程序,非常适合单元测试JMS 支持可插拔传输协议,例如in-VM,TCP,SSL,NIO,UDP,多播,JGroups和JXTA传输...

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

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包3

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包10

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包4

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包8

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包7

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics