`
sharis1987
  • 浏览: 12325 次
  • 性别: 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项目就开发完成了

 

 

 

 

 

 

 

            

   

       

 

分享到:
评论

相关推荐

    springboot+axis1.4

    而Axis1.4是Apache软件基金会的一个开源项目,它提供了一个SOAP(简单对象访问协议)Web服务框架,用于创建和部署Web服务。 当我们需要在Spring Boot项目中集成Axis1.4来实现Web服务时,我们需要了解以下几个关键...

    Springboot集成axis1.4的demo

    当我们需要在Spring Boot项目中集成旧版的 Axis1.4 来发布Web服务时,这通常涉及到对传统SOAP(简单对象访问协议)服务的支持。以下将详细讲解如何在Spring Boot应用中集成Axis1.4以及使用wsdd文件发布Web服务。 ...

    axis1.4帮助文档

    Axis1.4是Apache软件基金会开发的一个开源SOAP(简单对象访问协议)库,主要用于构建和部署Web服务。这个版本的Axis是基于Java平台的,它为开发者提供了强大的工具集,以便于实现符合WS-I(Web Services ...

    springboot使用axis1.4的demo

    当我们需要在Spring Boot应用程序中集成Web服务时,Axis1.4提供了一个强大的工具。 首先,我们需要了解**Spring Boot**。它是一个基于Spring框架的脚手架,旨在简化创建独立的、生产级别的基于Spring的应用程序。...

    apache axis1.4实例

    在实际开发中,Apache Axis1.4常用于企业级应用集成,例如B2B系统之间的数据交换,或者为现有Java应用程序提供Web服务接口。它也可以与EJB、Spring等框架集成,构建复杂的分布式系统。 总结,Apache Axis1.4虽已...

    web service axis1.4 jar

    Axis1.4可以与EJB(Enterprise JavaBeans)、Spring框架、JMS(Java Message Service)等其他Java技术无缝集成,扩大了Web服务的使用范围。 10. **性能优化**: 虽然Axis1.4相较于现代的Web服务框架(如Apache ...

    axis1.4及webService开发教程

    6. **测试与调试**:可以通过简单的Java程序或集成开发环境(IDE)测试Web服务的功能,也可以使用像SoapUI这样的工具进行更复杂的测试和调试。 在实际应用中, Axis1.4还可以与其他Java EE组件如EJB、JMS等结合,...

    axis1.4和axis2相关jar文件

    了解并熟练使用Axis1.4和Axis2的相关jar文件,对于开发和维护Web服务至关重要。这不仅可以帮助开发者快速构建服务,还能确保与现有系统和其他Web服务的互操作性。在实际项目中,应根据具体需求选择适合的版本,同时...

    使用Eclipse的Axis1.4插件开发Web Service及客户端

    在Eclipse JEE 3.3版本中,开发Web Service和客户端程序变得相对简单,因为该版本已经集成了Axis1.4插件,无需额外安装。 Axis是一个开放源码的Web Service框架,它允许开发者快速地创建和部署Web Service。 1. **...

    axis1.4依赖包

    4. **集成Web服务**: 在集成Web服务时,Axis1.4可以作为一个客户端或者服务器端的栈。作为客户端,它可以自动生成Java stubs,使开发者能够像调用本地方法一样调用远程Web服务。作为服务器端,它可以将Java类自动...

    在axis1.4中传递复杂类型数组参数(ArrayMapping)

    在 Axis1.4 中传递复杂类型数组参数,涉及到的是 Web 服务中的数据绑定和消息处理。Axis 是一个开源的 SOAP 库,它允许开发者创建、部署和使用 Web 服务。在处理复杂类型数组时,ArrayMapping 是 Axis 中的一个关键...

    Springboot,axis1.4的demo

    在本示例中,"Springboot,axis1.4的demo" 提供了一个具体的案例,展示了如何在 SpringBoot 项目中集成 Axis1.4,这是一个古老的但仍然广泛使用的 SOAP Web 服务框架。SOAP(简单对象访问协议)是一种用于交换结构化...

    axis1.4资源

    这个框架是基于早期的Axis版本,即Axis1.x系列,而Axis1.4是其中的一个稳定版本,发布于2007年,提供了许多对SOAP(简单对象访问协议)和WSDL(Web服务描述语言)的支持。 在Web服务领域,Axis1.4扮演着关键角色,...

    axis1.4带lib包java开发webservice客户端和服务端

    描述中提到的“下载即可直接运行”,意味着这个压缩包包含了运行Web服务项目所需的所有依赖,包括 Axis1.4 JAR文件和其他相关的库,比如XML解析器、SOAP绑定库等。这些库文件对于理解和处理Web服务的请求和响应至关...

    apache axis 1.4 final

    Apache Axis 1.4 Final 是一个历史悠久且广泛使用的SOAP...尽管现代Web服务栈可能已经转向更现代的协议(如RESTful API),但在一些遗留系统或需要与旧有系统集成的场景中,Apache Axis 1.4仍然具有重要的价值。

    axis 1.4jar 包

    Apache Axis1.4在发布时是最新版,因此被推荐下载使用。该框架提供了丰富的功能,使得开发人员能够轻松地实现Web服务的创建、调用和集成。 首先,让我们逐一了解压缩包中的文件及其作用: 1. **axis.jar**:这是...

    axis 1.4安装

    这些库文件涵盖了XML解析、SOAP处理、WSDL解析等多个方面,对于理解Axis的内部工作原理以及与其他Java项目集成至关重要。 总结来说,Apache Axis 1.4是一个强大的Web服务框架,它的安装涉及下载、解压、环境变量...

    axis1.4.rar

    标题“axis1.4.rar”指的是Axis 1.4版本的软件包,它是一个流行的开源Java框架...总的来说,`axis1.4.rar`文件为Java开发者提供了在WSL基础上构建和消费Web服务的能力,简化了开发流程,促进了跨平台的分布式系统集成。

    axis1.4 心得

    而“工具”标签则提示我们,Axis1.4作为一个开发工具,如何与其他开发工具(如IDE、构建工具等)集成,以及如何简化Web服务的开发流程。 在压缩包子文件的文件名称列表中,只给出了“jws”。这可能是“Java Web ...

    axis 1.4 所有jar包

    5. **集成到其他Java应用**:这些JAR包可以被添加到任何Java项目中,以利用其Web服务功能。 总结,"axis 1.4 所有jar包" 是一套完整的Java库,用于在Java平台上构建和使用Web服务。它们包含了处理XML、SOAP、WSDL、...

Global site tag (gtag.js) - Google Analytics