- 浏览: 1230501 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lankk:
lankk 写道事实上,在运行String s1=new St ...
理解String 及 String.intern() 在实际中的应用 -
lankk:
事实上,在运行String s1=new String(&qu ...
理解String 及 String.intern() 在实际中的应用 -
lankk:
同意1楼的说法http://docs.oracle.com/j ...
理解String 及 String.intern() 在实际中的应用 -
raoyutao:
...
jdk 线程池 ThreadPoolExecutor -
hongdanning:
理解了。之前困惑的一些明白了。谢谢分享。
理解String 及 String.intern() 在实际中的应用
WSDL 文档是利用这些主要的元素来描述某个 web service 的:
<portType> | web service 执行的操作 |
<message> | web service 使用的消息 |
<types> | web service 使用的数据类型 |
<binding> | web service 使用的通信协议 |
下面是一个标准的wsdl定义
来自 http://www.webxml.com.cn/webservices/weatherwebservice.asmx?wsdl
<?xml version="1.0" encoding="utf-8"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://WebXml.com.cn/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://WebXml.com.cn/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><a href="http://www.webxml.com.cn/" target="_blank">WebXml.com.cn</a> <strong>天气预报 Web 服务,</strong>数据来源于<strong>中国气象局</strong> <a href="http://www.cma.gov.cn/" target="_blank">http://www.cma.gov.cn/</a> ,数据每2.5小时左右自动更新一次,准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。</br>此天气预报Web Services请不要用于任何商业目的,若有需要请<a href="http://www.webxml.com.cn/zh_cn/contact_us.aspx" target="_blank">联系我们</a>,欢迎技术交流。 QQ:8409035<br /><strong>使用本站 WEB 服务请注明或链接本站:http://www.webxml.com.cn/ 感谢大家的支持</strong>!<br /><span style="color:#999999;">通知:天气预报 WEB 服务如原来使用地址 http://www.onhap.com/WebServices/WeatherWebService.asmx 的,请改成现在使用的服务地址 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx ,重新引用即可。</span><br /><br />&nbsp;</wsdl:documentation> <wsdl:types> <s:schema elementFormDefault="qualified" targetNamespace="http://WebXml.com.cn/"> <s:complexType name="ArrayOfString"> <s:sequence> <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" /> </s:sequence> </s:complexType> <s:element name="getSupportDataSet"> <s:complexType /> </s:element> <s:element name="getSupportDataSetResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="getSupportDataSetResult"> <s:complexType> <s:sequence> <s:element ref="s:schema" /> <s:any /> </s:sequence> </s:complexType> </s:element> </s:sequence> </s:complexType> </s:element> <s:element name="ArrayOfString" nillable="true" type="tns:ArrayOfString" /> <s:element name="DataSet" nillable="true"> <s:complexType> <s:sequence> <s:element ref="s:schema" /> <s:any /> </s:sequence> </s:complexType> </s:element> </s:schema> </wsdl:types> <wsdl:message name="getSupportDataSetSoapIn"> <wsdl:part name="parameters" element="tns:getSupportDataSet" /> </wsdl:message> <wsdl:message name="getSupportDataSetSoapOut"> <wsdl:part name="parameters" element="tns:getSupportDataSetResponse" /> </wsdl:message> <wsdl:portType name="WeatherWebService"> <wsdl:operation name="getSupportDataSet"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><br><h3>获得本天气预报Web Services支持的洲、国内外省份和城市信息</h3><p>输入参数:无;返回:DataSet 。DataSet.Tables(0) 为支持的洲和国内省份数据,DataSet.Tables(1) 为支持的国内外城市或地区数据。DataSet.Tables(0).Rows(i).Item("ID") 主键对应 DataSet.Tables(1).Rows(i).Item("ZoneID") 外键。<br />Tables(0):ID = ID主键,Zone = 支持的洲、省份;Tables(1):ID 主键,ZoneID = 对应Tables(0)ID的外键,Area = 城市或地区,AreaCode = 城市或地区代码。</p><br /></wsdl:documentation> <wsdl:input message="tns:getSupportDataSetSoapIn" /> <wsdl:output message="tns:getSupportDataSetSoapOut" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="WeatherWebServiceSoap" type="tns:WeatherWebService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="getSupportDataSet"> <soap:operation soapAction="http://WebXml.com.cn/getSupportDataSet" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="WeatherWebService"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><a href="http://www.webxml.com.cn/" target="_blank">WebXml.com.cn</a> <strong>天气预报 Web 服务,</strong>数据来源于<strong>中国气象局</strong> <a href="http://www.cma.gov.cn/" target="_blank">http://www.cma.gov.cn/</a> ,数据每2.5小时左右自动更新一次,准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。</br>此天气预报Web Services请不要用于任何商业目的,若有需要请<a href="http://www.webxml.com.cn/zh_cn/contact_us.aspx" target="_blank">联系我们</a>,欢迎技术交流。 QQ:8409035<br /><strong>使用本站 WEB 服务请注明或链接本站:http://www.webxml.com.cn/ 感谢大家的支持</strong>!<br /><span style="color:#999999;">通知:天气预报 WEB 服务如原来使用地址 http://www.onhap.com/WebServices/WeatherWebService.asmx 的,请改成现在使用的服务地址 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx ,重新引用即可。</span><br /><br />&nbsp;</wsdl:documentation> <wsdl:port name="WeatherWebService" binding="tns:WeatherWebServiceSoap"> <soap:address location="http://www.webxml.com.cn/webservices/weatherwebservice.asmx" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
自己做的项目中用axis2做webservice, 并与spring集成,
这个集成方法比较麻烦, 找到了更简便的方法 http://renxiangzyq.iteye.com/blog/1021696
之前已经集成了,下面是我找到的一些集成点
web.xml
<servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern><!--have to named as /services/--> </servlet-mapping>
WEB-INF 下的相关目录
. ├── conf │ └── axis2.xml ├── modules │ ├── addressing-1.5.2.mar │ ├── axis2-jaxws-mar-1.5.2.mar │ ├── mex-1.5.2.mar │ ├── modules.list │ ├── mtompolicy-1.5.2.mar │ ├── ping-1.5.2.mar │ ├── scripting-1.5.2.mar │ └── soapmonitor-1.5.2.mar ├── services │ ├── ecvservice │ │ └── META-INF │ │ └── services.xml │ ├── services.list │ └── version-1.5.2.aar └── web.xml
接下来我要新加一个webservice
1. 首先用myeclipse的New。。。 里面wsdl生成一个wsdl模板, 然后自己在wsdl可视化设计器里定义输入, 输出
这里要注意的是定义复杂类型是在设计器的一个叫types 的地方, 或者直接写source, 下面是个列子
<wsdl:types> <xs:schema xmlns:ax23="http://webservice.xxxx.com" xmlns:ax24="http://webservice.xxxx.com/xsd" xmlns:ax22="http://business.webservice.xxxx.com/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://webservice.xxxx.com"> <xs:complexType name="Entrydata"> <xs:sequence> <xs:element minOccurs="0" name="authToken" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="url" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="Result"> <xs:sequence> <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="status" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="getAuthToken"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="userName" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="userId" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="friendlyName" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="email" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="getAuthTokenResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="entrydata" nillable="true" type="ax23:Entrydata"/> <xs:element minOccurs="0" name="result" nillable="true" type="ax23:Result"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types>
2. 在wsdl写好后就可以利用axis2的plugin来生成代码,可以生成服务器端和客户端的, 我主要是要服务器端的,把服务器端的代码copy要到项目中,
├── AserviceMessageReceiverInOut.java //输入 输出 的转换对象 ├── AserviceSkeleton.java //service类 ├── AserviceSkeletonInterface.java //接口 ├── AuthRequest.java //代表请求数据的类 负责请求数据的处理 ├── AuthResponse.java //响应数据的类 负责响应数据 ├── Entrydata.java //复杂数据类型 ├── ExtensionMapper.java //不用管的 └── Result.java //复杂数据类型
然后把│ ├── aservice
│ │ └── META-INF │ │ └── services.xml
放入WEB-INF/services/下
service.xml 内容如下
<?xml version="1.0" encoding="UTF-8"?> <service name="aservice"> <description>atservice - spring axis2 web service</description> <parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier</parameter> <parameter name="SpringBeanName">aWebService</parameter> <messageReceivers > <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="com.xxxx.webservice.AserviceMessageReceiverInOut"/> </messageReceivers> </service>
3. 接着启动服务器 访问 /services/aservice?wsdl 应该就可以看到wsdl , 但这个wsdl和原来里自己写的有些不一样了
你可能想自己修改(服务器生成的可能格式不对, 用soapui不能直接访问) , 可以把这个生成的wsdl 保存到一个文件中放到 WEB-INF/services/aservice/META-INF/下,然后自己按照想要的修改, 这个时候在去访问/services/aservice?wsdl看到的就是你自己修改过的了,
(但这里面的location会根据你访问的地址变化, 所以就不用担心wsdl里面的一些写死的地址相关的会在开发服务器和生产服务器切换的时候要去修改配置了)
如
<soap:address location="http://127.0.0.1:8080/xxxx/services/aservice.aserviceHttpSoap11Endpoint/" />
是你访问127.0.0.1时的输出
<soap:address location="http://localhost:8080/xxxx/services/aservice.aserviceHttpSoap11Endpoint/" />
是你访问localhost时的输出
最后完成的目标应该是soapui直接用访问 /services/aservice?wsdl生成的wsdl生成一个项目, 然后直接用默认的request可以去访问服务而不出异常
最开始的时候会报错
因为AuthRequest.java里面有句
if (reader.isStartElement() && new javax.xml.namespace.QName("", "userName").equals(reader.getName())) {
这里是两个QName做比较, 服务器端生成的
new javax.xml.namespace.QName("", "userName")
是没有namespace 的, 而客户端请求上来的是有namespace 的, 所以会出现Unexpected subelement
这里我在比较的时候加了QName.getLocalPart()去比较 就忽略了namespace对比较的影响
还有一个关于namespace 的讨论
http://grails.1312388.n4.nabble.com/Grails-AXIS2-Web-Services-td3452513.html
发表评论
-
连接池exception GetConnectionTimeoutException get/close not same thread
2015-09-24 14:44 7120环境 hibernate 4.2.0.Final sp ... -
tomcat 7 应用不能访问 及 配置管理界面
2015-09-16 15:26 2746tomcat 7 应用不能访问 及 配置管理界面 ... -
iteye blog 备份
2015-06-01 11:03 1192以前javaeye有博客导出成pdf的功能, 现在这个功能 ... -
jaxb xml 解析出 list对象
2015-03-26 16:29 10612jaxb想直接解析出list对象, 不用在list对象上再去 ... -
jvm notes
2014-12-16 15:19 1689运行时数据区 program counter re ... -
string split 空字符串问题
2014-09-02 15:02 1936String str="123,123,,1 ... -
IntelliJ IDEA keys
2014-05-29 15:35 1187open type Ctrl+N open ... -
POI excel 触发 公式 计算 删除空白行
2013-04-15 12:44 5084用POI api修改excel 表格数据后, 想触发计算公式 ... -
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 异常处理
2013-01-05 14:13 3212引用: http://javaskeleton.blogs ... -
MD5 SHA1 Base64 HmacSHA1
2012-10-26 14:23 2178MD5 SHA1 import java.securi ... -
struts2 jsp 禁止 直接 访问
2011-10-13 14:16 3145想要禁止 struts2 应用中 部分jsp 的 直接访问 ... -
jboss-log4j.xml
2011-09-22 17:42 3170使用 jboss_home/server/default/co ... -
jboss 映射 url 虚拟目录 设置system property
2011-08-31 12:56 2194jboss 4.2.3 在[jboss home ... -
jboss 连接池 scheduler
2011-08-04 19:13 1569将oracle-ds.xml 放到 jboss_home\s ... -
jboss Caused by: LifecycleException: Error initializaing : javax.management.R
2011-08-04 14:55 2312Caused by: LifecycleException: ... -
axis2 spring pojo 集成
2011-04-28 15:28 2490之前写的 http://renxiangzyq.iteye.c ... -
apache jboss ssl 配置
2011-03-10 19:37 1597httpd.conf Include "co ... -
cron 表达式
2010-12-13 17:47 1130http://sosuny.iteye.com/blog/46 ... -
资源文件转码
2010-10-27 14:54 1196GBK to utf-8 native2ascii ... -
maven test jar
2010-09-18 11:32 2377多模块的时候 模块之间的test代码也是互相依赖 但默认打包 ...
相关推荐
1. **Apache Axis2 Web服务引擎**:了解其架构,包括模块化设计,消息处理器,以及WSDL(Web服务描述语言)到Java代码的编译过程。 2. **Spring框架集成**:学习如何使用Spring的`Axis2ServiceBean`或`Axis2...
总的来说,Apache Axis2作为一个强大的Web服务开发框架,提供了丰富的特性和集成选项,包括WSDL生成、Spring整合和RESTful服务支持,以及与Servlet容器如Tomcat的无缝集成,为开发者带来了极大的便利。通过理解和...
在本文中,我们将深入探讨如何将Apache Axis2与Spring Boot集成,以构建一个高效、可扩展的Web服务应用。Apache Axis2是Java平台上的一个Web服务框架,它提供了高性能、灵活的服务开发和部署机制。而Spring Boot是...
标题中的"axis2 + spring3.2.0"指的是在Java Web开发中,将Apache Axis2服务框架与Spring 3.2.0版本的依赖管理相结合的技术应用。Apache Axis2是一个用于构建Web服务和SOA(Service-Oriented Architecture,面向服务...
5. **测试和调用**:现在,你可以像调用任何其他Axis2服务一样,通过WSDL地址测试和调用这些由Spring管理的服务。 此外,集成Spring和Axis2还能利用Spring的安全和事务管理功能,为Web服务提供更好的安全保障和事务...
当我们需要在Spring项目中提供Web服务时,Axis2是一个常用的工具,它是一个高效的Web服务引擎,支持SOAP 1.1和1.2,以及RESTful服务。本篇文章将详细介绍如何在Spring中集成Axis2来实现Web服务,并且会提及相关的Jar...
2. **使用Axis2的wsdl2java工具**:这个工具可以从WSDL文件生成Java客户端代码,包括服务代理类和服务接口。运行`wsdl2java`命令时,需要提供WSDL的URL或本地路径。生成的代码可以导入到项目中,方便调用服务。 3. ...
### Axis2集成Spring知识点 #### 一、概览 本文档旨在介绍如何将Apache Axis2与Spring框架进行集成,以实现灵活的服务部署和管理。在实际应用中,开发者可能需要利用Spring来管理业务对象(例如POJOs),并希望...
在IT行业中,Spring框架是Java企业级应用开发的首选,而Apache Axis2则是知名的Web服务引擎,用于处理SOAP协议和创建Web服务。本篇将详细探讨如何将Spring 3.2.5版本与Axis2 1.6.2版本进行整合,以便在Spring环境中...
当我们谈论“Axis2+Spring2.5整合(Web服务)”时,我们指的是将Apache Axis2和Spring框架结合在一起,以便更高效地开发和管理Web服务。 Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了SOAP消息...
标题中的“axis2和axis2+spring发布服务指南”指的是如何使用Apache Axis2框架结合Spring框架来部署和发布Web服务。Axis2是Apache软件基金会开发的一个用于构建和部署Web服务的开源框架,它基于Java语言并支持SOAP和...
当我们谈论"Axis2 Spring整合POJO开发Web服务"时,这意味着我们将使用Axis2来创建Web服务,并通过Spring框架来管理和控制这些服务,同时利用POJO(Plain Old Java Object)作为业务逻辑的核心。 首先,让我们深入...
axis2-spring-1.5.4.jar axis2-transport-http-1.5.4.jar axis2-transport-local-1.5.4.jar axis2-xmlbeans-1.5.4.jar commons-httpclient-3.1.jar httpcore-4.0.jar neethi-2.0.4.jar wsdl4j-1.6.2.jar XmlSchema-...
2. **创建Axis服务**:利用Axis的工具,如wsdl2java,从WSDL文件生成Java服务类和客户端 stubs。 3. **Spring Bean注册**:将Spring生成的Bean注册到Axis的Service中,通常通过实现SpringBeanAware接口或者自定义...
Spring整合Axis2经典案例解析 在Java Web服务开发中,Spring框架和Apache Axis2是两个重要的组件。Spring作为一款强大的企业级应用框架,提供了一种模块化、灵活的方式来构建应用程序,而Axis2则是Apache组织提供的...
### Axis2集成Spring发布WebServices服务 #### 一、概览 在当今的企业级应用开发中,集成多种技术框架以实现高效稳定的服务交互是常见需求之一。Axis2作为一款高性能的开源Web服务栈,提供了丰富的功能来支持SOAP、...
至于压缩包文件名称“axis2spring”,很可能是包含了一组示例代码或教程,用于演示如何将Axis2和Spring集成以发布Web服务。这些资源可能包括Spring配置文件、服务实现类、测试用例等,帮助开发者理解实际操作流程。 ...
Axis2支持多种Web服务标准,如SOAP、WSDL、WS-Addressing等,并且可以与各种数据绑定技术(如XMLBeans、Aegis、JAXB等)配合使用。此外,Axis2提供了丰富的扩展机制,允许自定义处理逻辑。 【Spring3与Axis2的整合...
2. **创建Web服务**:使用Axis生成Java类或WSDL,这将作为Web服务的基础。 3. **集成到Spring**:将生成的Web服务类作为Spring bean,通过`@WebService`注解标记,然后在Spring配置文件中声明这个bean。 4. **处理...
使用-axis.wsdl选项运行wsdl2java工具,指定你的服务类,它将自动生成对应的WSDL文件。 2. **从WSDL生成服务端代码**: 反之,如果你有一个WSDL文件,可以使用Axis1.4将其转换为Java服务端代码。同样,确保Eclipse...