- 浏览: 1098529 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
skyesx:
这是2PC实现,更常用的是一个柔性事务的实现,可以参考http ...
Spring分布式事务实现 -
ddbird:
这第一句就不严谨“分布式事务是指操作多个数据库之间的事务”,显 ...
Spring分布式事务实现 -
呵呵6666:
基于互联网支付系统的微服务架构分布式事务解决方案http:// ...
Spring分布式事务实现 -
小黄牛:
写得不错,交流群:472213887
Spring分布式事务实现 -
jiaoqf321456:
这明明是用的apache的压缩,给ant.jar有半毛钱关系吗 ...
使用ant.jar进行文件zip压缩
一、基础知识
Web Service主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。
Axis支持三种web service的部署和开发,分别为:
1、Dynamic Invocation Interface ( DII)
2、Stubs方式
3、Dynamic Proxy方式
名词解释:
SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
WSDL(网络服务描述语言,Web Services Description Language)是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。
UDDI(通用描述、发现与集成服务,Universal Description, Discovery and Integration)目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。
JAXM(Java API for XML Messaging) 是为SOAP通信提供访问方法和传输机制的API。
二、使用axis开发webservice例一
(1)要发布的服务端程序
(2)web.xml中配置AxisServlet
(3)配置静态发布文件server-config.wsdd
(4)调用测试
三、例二,使用Spring的ServletEndpointSupport来实现WebService
(1)、接口和实现
(2)、使用ServletEndpointSupport
(3)、web.xml和applicationContext.xml
(4)、server-config.wsdd
(5)、测试
Web Service主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。
Axis支持三种web service的部署和开发,分别为:
1、Dynamic Invocation Interface ( DII)
2、Stubs方式
3、Dynamic Proxy方式
名词解释:
SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
WSDL(网络服务描述语言,Web Services Description Language)是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。
UDDI(通用描述、发现与集成服务,Universal Description, Discovery and Integration)目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。
JAXM(Java API for XML Messaging) 是为SOAP通信提供访问方法和传输机制的API。
二、使用axis开发webservice例一
(1)要发布的服务端程序
package com.logcd.webservice; import com.logcd.model.OpResult; public class Calculator { public int add(int i1, int i2) { return i1 + i2; } public int subtract(int i1, int i2) { return i1 - i2; } public int multiply(int i1, int i2) { return i1 * i2; } public int divide(int i1, int i2) { return i1 / i2; } public OpResult getOpResult(int i1, int i2){ OpResult result = new OpResult(); result.setSum(add(i1, i2)); result.setDifference(subtract(i1, i2)); result.setProduct(multiply(i1, i2)); result.setQuotient(divide(i1, i2)); return result; } }
(2)web.xml中配置AxisServlet
<servlet> <display-name>Apache-Axis Servlet</display-name> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </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>
(3)配置静态发布文件server-config.wsdd
<?xml version="1.0" encoding="UTF-8"?> <deployment name="defaultClientConfig" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler" xmlns="http://xml.apache.org/axis/wsdd/"> <globalConfiguration name="defaultClientConfig"> <requestFlow name="RequestFlow1" type=""> <handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="session"/> </handler> <handler name="Handler2" type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="request"/> <parameter name="extension" value=".jwr"/> </handler> </requestFlow> </globalConfiguration> <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/> <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/> <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/> <transport name="http" type=""> <requestFlow name="RequestFlow1" type=""> <handler name="Handler1" type="URLMapper"/> <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/> </requestFlow> </transport> <transport name="local" type=""> <responseFlow name="ResponseFlow1" type=""> <handler name="Handler1" type="LocalResponder"/> </responseFlow> </transport> <service name="AdminService" type="" provider="java:MSG"> <parameter name="allowedMethods" value="AdminService"/> <parameter name="enableRemoteAdmin" value="false"/> <parameter name="className" value="org.apache.axis.utils.Admin"/> <namespace>http://xml.apache.org/axis/wsdd/</namespace> </service> <service name="Version" type="" provider="java:RPC"> <parameter name="allowedMethods" value="getVersion"/> <parameter name="className" value="org.apache.axis.Version"/> </service> <service name="Calculator" type="" provider="java:RPC" style="rpc" use="encoded"> <parameter name="scope" value="Request"/> <parameter name="className" value="com.logcd.webservice.Calculator"/> <parameter name="allowedMethods" value="*"/> <!-- typeMapping:需要自定义deserializer和serializer的时候使用这个标签 beanMapping:使用axis默认的deserializer和serializer --> <beanMapping languageSpecificType="java:com.logcd.model.OpResult" qname="ns:resp" xmlns:ns="urn:BeanService" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> <namespace>http://axis.userguide.samples</namespace> </service> </deployment>
(4)调用测试
package com.logcd.webservice; import javax.xml.rpc.ParameterMode; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; public class CalcTest { public static void main(String [] args) throws Exception { try{ String endpoint = "http://127.0.0.1/js_test/services/Calculator"; Integer i1 = new Integer(1000); Integer i2 = new Integer(1009); Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endpoint)); call.setOperationName("add"); call.addParameter("i1", XMLType.XSD_INT, ParameterMode.IN); call.addParameter("i2", XMLType.XSD_INT, ParameterMode.IN); call.setReturnType(XMLType.XSD_INT); Integer ret = (Integer) call.invoke(new Object[] {i1, i2}); System.out.println("Got result : " + ret); } catch(Exception e){ e.printStackTrace(); } } }
package com.logcd.webservice; 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.logcd.model.OpResult; public class ObjResultTest { public static void main(String[] args) throws Exception { try { String endpoint = "http://127.0.0.1/js_test/services/Calculator"; Integer i1 = new Integer(1009); Integer i2 = new Integer(1000); Service service = new Service(); Call call = (Call) service.createCall(); QName qn = new QName("urn:BeanService","resp"); //注册 bean call.registerTypeMapping(OpResult.class, qn, new BeanSerializerFactory(OpResult.class, qn), new BeanDeserializerFactory(OpResult.class, qn)); call.setTargetEndpointAddress(new java.net.URL(endpoint)); call.setOperationName(new QName("http://axis.userguide.samples","getOpResult")); OpResult ret = (OpResult) call.invoke(new Object[] { i1, i2 }); System.out.println("the operation result following:"); System.out.println("sum = " + ret.getSum()); System.out.println("difference = " + ret.getDifference()); System.out.println("product = " + ret.getProduct()); System.out.println("quotient = " + ret.getQuotient()); } catch (Exception e) { e.printStackTrace(); } } }
三、例二,使用Spring的ServletEndpointSupport来实现WebService
(1)、接口和实现
package com.logcd.service; public interface IHelloWorld { public String getMessage(String name); }
package com.logcd.service.impl; import com.logcd.service.IHelloWorld; public class HelloWorldImpl implements IHelloWorld { private String helloStr; public String getMessage(String name) { return helloStr + ":" + name; } public String getHelloStr() { return helloStr; } public void setHelloStr(String helloStr) { this.helloStr = helloStr; } }
(2)、使用ServletEndpointSupport
package com.logcd.webservice; import javax.xml.rpc.ServiceException; import org.springframework.remoting.jaxrpc.ServletEndpointSupport; import com.logcd.service.IHelloWorld; public class JaxRpcHelloWorld extends ServletEndpointSupport implements IHelloWorld{ private IHelloWorld helloWorld; protected void onInit() throws ServiceException { //在Spring容器中获取Bean的实例 helloWorld = (IHelloWorld) getApplicationContext().getBean( "helloWorld"); } public String getMessage(String name){ return helloWorld.getMessage(name); } }
(3)、web.xml和applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" > <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:applicationContext.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--axis需要的Servlet --> <servlet> <servlet-name>axis</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <!--axis的Web Service的Web发布路径--> <servlet-mapping> <servlet-name>axis</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="helloWorld" class="com.logcd.service.impl.HelloWorldImpl"> <property name="helloStr"> <value>Say Hello to :</value> </property> </bean> </beans>
(4)、server-config.wsdd
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/> <service name="HelloWorld" provider="java:RPC"> <parameter name="className" value="com.logcd.webservice.JaxRpcHelloWorld"/> <parameter name="allowedMethods" value="*"/> </service> <transport name="http"> <requestFlow> <handler type="URLMapper"/> </requestFlow> </transport> </deployment>
(5)、测试
package com.logcd.test; import java.net.URL; import javax.xml.namespace.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class testWebServiceClient { public static void main(String[] args) { try { String wsdlUrl = "http://localhost:8088/webService/services/HelloWorld?wsdl"; String nameSpaceUri = "http://localhost:8088/webService/services/HelloWorld"; Service service = new Service(); Call call = null; call = (Call) service.createCall(); System.out.println(">>>getMessage"); call.setOperationName(new QName(nameSpaceUri, "getMessage")); call.setTargetEndpointAddress(new URL(wsdlUrl)); String ret = (String) call.invoke(new Object[] { "ABC" }); System.out.println("return value is " + ret); } catch (Exception e) { e.printStackTrace(); } } }
- axis1.4_lib.rar (2 MB)
- 下载次数: 64
发表评论
-
SpringBoot开发WebService之Axis
2019-07-14 23:56 4893一、服务器端发布WebService服务 1、POM.xml文 ... -
SpringBoot开发WebService之CXF
2019-07-14 23:56 1353一、在服务器端的WebSerivce服务发布 1、POM.xm ... -
JDK6开发WebService及用户认证
2015-08-21 13:50 1432一、编写服务端并发布 1、定义接口 public inte ... -
WebService之CXF使用Session
2015-08-20 13:53 2007一、接口与实现 @WebService public i ... -
WebService之CXF处理类型转换
2015-08-20 13:53 2794一、接口与实现 @WebService @SOAPBin ... -
以多种方式访问WebService
2015-08-20 13:58 6455一、Java访问WebService (1)使用Axis ... -
Exporting beans as web services using XFire
2015-08-20 14:07 1161Once XFire is in your buil ... -
Spring中的远程访问和web服务
2010-05-23 23:17 4534一、介绍 目前,Sp ... -
spring使用RMI暴露服务
2008-07-11 14:03 3766(1)定义接口: package com.logcd.spri ... -
java RMI
2008-06-25 13:31 5183RMI限java之间,且使用Stream 技术(seri ...
相关推荐
在本文中,我们将深入探讨如何使用SpringBoot框架开发基于Axis的Web服务。SpringBoot以其便捷的启动和配置方式,已经成为Java开发中的首选框架之一。而 Axis 是一个流行的Apache项目,用于创建和部署Web服务,它提供...
本篇文章将详细介绍如何在Spring中集成Axis2来实现Web服务,并且会提及相关的Jar包。 首先,让我们理解Spring与Axis2集成的基础知识。Spring框架提供了一个服务导向架构(SOA)的支持,允许开发者轻松地创建和消费...
2. **Eclipse 集成 Axis 开发 WebService**: Eclipse 是一个广泛使用的 Java IDE,通过 Axis 插件,可以在 Eclipse 中方便地创建和调试 Web 服务。这使得开发者能够在熟悉的环境中进行 WebService 开发,无需离开 ...
标题中的“axis开发webservice客户端”指的是使用Apache Axis框架创建并使用Web服务客户端的过程。Apache Axis是Java平台上的一个开源工具,它简化了SOAP(Simple Object Access Protocol)Web服务的开发,包括...
本文将深入探讨如何使用Spring与Axis进行集成,以便开发和消费Web服务。 首先,让我们了解Spring和Axis的基本概念。Spring是一个开源Java框架,它为构建灵活、模块化且可测试的应用程序提供了强大的支持。它包含多...
- AXIS库的集成:将AXIS的lib目录下的jar文件复制到Tomcat的common/lib目录,确保服务器能够识别和处理Web服务。 3. **开发Web服务**: - 创建一个新的Dynamic Web Project,这是Java Web应用程序的基础。 - ...
为了更好地理解和实践这些步骤,可以参考给定的文档“Eclipse开发Axis_WebService实例总结_20100430.doc”。这个文档通常会包含详细的步骤、截图以及可能遇到的问题和解决方案,对于初学者非常有帮助。 总结,发布...
在IT行业中,Web服务是应用程序之间进行通信的一种标准方式,而Axis2是Apache软件基金会开发的一个流行的Java Web服务框架。Spring框架则是Java企业级应用的事实标准,提供了强大的依赖注入、AOP(面向切面编程)等...
本文将深入探讨如何利用Axis开发WebService,以及相关的技术要点。 首先,了解WebService的基础概念是至关重要的。WebService是一种基于开放标准(如XML、WSDL和SOAP)的互联网应用程序,它能够跨平台、跨语言地...
5. Eclipse集成Axis2: - 安装Axis2插件:在Eclipse Marketplace中搜索并安装Axis2插件,如"Axis2 Web Service Developer Tools"。 - 创建Web服务项目:在Eclipse中新建一个Axis2 Web服务项目,选择服务实现和WSDL...
【标题】: 使用Eclipse和AXIS开发WebService的步骤详解 【描述】: 本文档详细介绍了如何利用Eclipse集成开发环境和AXIS框架来创建并发布WebService。 【标签】: Eclipse 【部分内容】: 在开发基于Java的...
Axis 是 Apache 维护的开源工具,它提供了生成服务端和客户端代码的能力,而 Eclipse 则提供了一个集成的开发环境,方便创建、调试和部署 Web Service。通过理解 Web Service 的概念、工作原理以及 Axis 和 Eclipse ...
标题“Java-tomcat-axis2开发webservice返回json数据”涉及的是使用Java、Tomcat服务器以及Axis2框架来创建Web服务,并返回JSON格式的数据。这是一个常见的技术组合,用于构建RESTful API或者提供服务化接口。下面...
本指南旨在为初学者提供AXIS框架下开发WebService的详细步骤,涵盖了从获取开发资源、生成 stub、编写服务器端代码到客户端测试的全过程。AXIS是一个开源的Java库,它提供了创建、部署和使用Web服务的工具,是基于...
这可以通过 Axis2的命令行工具或集成开发环境(IDE)如Eclipse中的插件完成。打包过程中,需要包含服务类、服务描述文件(如`services.xml`)和其他必要的依赖。 3. **部署服务**:将生成的`.aar`包放入Axis2服务器...
在使用Eclipse集成开发环境配合XDoclet和Axis开发WebService的背景下,本文将详细介绍相关的知识点和步骤。首先需要了解的是,WebService是一种可让应用程序通过网络(尤其是互联网)进行通信的接口和协议。它通常...
### Axis2 WebService 开发指南知识点详述 #### 一、Axis2 WebService 技术概览 **Axis2** 是Apache的一个开源项目,旨在提供一个高性能、灵活且可扩展的Web服务框架,用于实现基于SOAP协议的Web服务。与前代产品*...