- 浏览: 420790 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (114)
- C++ (1)
- JAVA (58)
- sql,oracle,mysql (7)
- struts (2)
- tomcat (6)
- JS CSS (6)
- 其他 (7)
- javascript (4)
- exception (1)
- error (1)
- hashmap (1)
- hashset (1)
- python (1)
- sql (2)
- oracle (4)
- mysql (2)
- weblogic (3)
- session (2)
- http-only-cookie (1)
- httponly (1)
- cookie (1)
- ide (0)
- intellij (1)
- eclipse (2)
- idea (1)
- connection (2)
- maven (4)
- m2eclipse (2)
- m2e (2)
- InetAddress (1)
- DNS (1)
- web (1)
- goals (1)
- copy-dependencies (1)
- unpack (1)
- hash (1)
- 分布式 (1)
- gc (4)
- volatile (1)
- rsa (1)
- 加密 (1)
- 签名 (1)
- socket (1)
- tcp (1)
最新评论
-
xuxiaoyinliu:
谢谢,不错哦
有关cookie的httponly属性相关 -
雁行:
svn根本就不需要这么罗嗦的实现。
版本比较,直接出增量文件, ...
ant+cvs实现增量部署 -
ludatong110:
这个东西在IE里面会很明显的,我就碰到过IE中因为这个HTML ...
有关jqGrid应用里的字体大小不能控制的问题 -
labchy:
非常感谢 解决了问题
有关jqGrid应用里的字体大小不能控制的问题 -
tengyue5i5j:
Crusader 写道竟然有这么多人投良好。。。
楼主的思路有 ...
java实现一个栈,并提供取该栈中最大数的方法,复杂度O(1)
前言:上一篇介绍了手动写客户端的axis1.4的应用实例,那个例子是没有问题的,但细心的同志们会发现,生成的wsdl文件是有问题的,比较刺眼的关键字是 ArrayOf_xsd_anyType 这个表明根本不认识list,而且list里放入的对象也没有在该WSDL文件里描述,这样带来的问题就是如果只根据WSDL文件来生成客户端,比如用axis1.4的wsdl2java命令
D:\develop_tools\axis-1_4\lib>java -cp .;axis.jar;jaxrpc.jar;saaj.jar;wsdl4j-1.5.1.jar;commons-discovery-0.2.jar;commons-logging-1.0.4.jar;log4j-1.2.8
.jar org.apache.axis.wsdl.WSDL2Java http://localhost:8091/bjchannel/services/EsopWBService1?wsdl
示例如上,的话,生成的类明显少了一个,就是list里放入的MenuNodeInterface类,这个在WSDL里根本没有体现
而且奇怪的是假如用list的话,如果添加了list的add方法,比如public void addMenuNodeInterface(MenuNodeInterface obj){list.add(obj);}(伪代码)的话,在生成的WSDL里就会有MenuNodeInterface的体现,但集合还是没有。这个看看AXIS的源码就明白了.
关于这个问题,首先参看axis1.4的官方文档user-guide.pdf,这个我在附件里上传上来,查看里面的
1.6.3里的1.6.3.1项,说的很清楚,由于LIST这些集合类和其他语言不通用,所以需要当作CUSTOM类自己做映射在service-config.xml里,那就麻烦了,加入实现类是ArrayList的话,还需要把相应的jar包加进来做映射;
所以后面有一句关键的:The most reliable way to send aggregate objects is to use arrays
有感觉没,对了,就是用[]数组来代替接口里需要的属性和返回值。
废话不说了,上代码
1:返回结果类
package com.asiainfo.boss.channel.channelservices; import java.io.Serializable; public class EsopResult1 implements Serializable{ /** * seriaId */ private static final long serialVersionUID = -1922115715606536898L; /** * 0:成功 1:失败 */ private Short returnCode=1; //一般不用语言特定的集合类,统一用数组代替 //private List<MenuNodeInterface> sysMenuNodeList; private MenuNodeInterface[] sysMenuNodeList; private String errorMsg; // public EsopResult1(){ // sysMenuNodeList=new ArrayList<MenuNodeInterface>(); // sysMenuNodeList.add(new MenuNodeInterface()); // // } // public EsopResult1(){ sysMenuNodeList=new MenuNodeInterface[]{new MenuNodeInterface()}; } public Short getReturnCode() { return returnCode; } public void setReturnCode(Short returnCode) { this.returnCode = returnCode; } // public List<MenuNodeInterface> getSysMenuNodeList() { // return sysMenuNodeList; // } // // public void setSysMenuNodeList(List<MenuNodeInterface> sysMenuNodeList) { // this.sysMenuNodeList = sysMenuNodeList; // } //如果用list的话,还不光需要有list的set和get方法,还必须有addlist的方法,这样生成的wsdl才能包含list里的内容对象 //不过即使这样,还是会有问题,总之用数组代替就对了 public MenuNodeInterface[] getSysMenuNodeList() { return sysMenuNodeList; } public void setSysMenuNodeList(MenuNodeInterface[] sysMenuNodeList) { this.sysMenuNodeList = sysMenuNodeList; } public String getErrorMsg() { return errorMsg; } public void setErrorMsg(String errorMsg) { this.errorMsg = errorMsg; } }
2:手动客户端调用测试类
package com.asiainfo.boss.channel.channelservices; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import org.apache.axis.encoding.ser.BeanDeserializerFactory; import org.apache.axis.encoding.ser.BeanSerializerFactory; public class EsopWBClient1 { public static void main(String...args){ getResult(); } public static void getResult(){ try { String endpoint = "http://localhost:8091/bjchannel/services/EsopWBService1"; Long opId = new Long(1009); Long orgId = new Long(1000); Service service = new Service(); Call call = (Call) service.createCall(); QName qn = new QName("urn:EsopWBService1","EsopResult1"); QName qn1 = new QName("urn:EsopWBService1","MenuNodeInterface"); //注册 bean call.registerTypeMapping(EsopResult1.class, qn, new BeanSerializerFactory(EsopResult1.class, qn), new BeanDeserializerFactory(EsopResult1.class, qn)); call.registerTypeMapping(MenuNodeInterface.class, qn1, new BeanSerializerFactory(MenuNodeInterface.class, qn1), new BeanDeserializerFactory(MenuNodeInterface.class, qn1)); call.setTargetEndpointAddress(new java.net.URL(endpoint)); call.setOperationName(new QName("EsopWBService1","qryMenuNodeInfoList")); // Object[] sss=new Object[2]; // sss[0]=i1; // sss[1]=i2; //EsopResult1 ret = (EsopResult1) call.invoke("qryMenuNodeInfoList",new Object[]{i1,i2}); //以下两个参数必须加,不然后报数组越界异常,因为源码里的operation为的params需要手动设置 //invoke只负责往里传递数,不管原来方法参数的初始化,以下两句表明调用的方法需要初始化两个参数 call.addParameter("opId", XMLType.XSD_LONG, ParameterMode.IN); call.addParameter("orgId", XMLType.XSD_LONG, ParameterMode.IN); EsopResult1 ret = (EsopResult1) call.invoke(new Object[]{opId,orgId}); System.out.println("the operation result following:"); System.out.println("ErrorMsg = " + ret.getErrorMsg()); System.out.println("ReturnCode = " + ret.getReturnCode()); // 这是用list做属性的客户端写法,没有问题,问题只会出现在wsdl的生成上,因为手写客户端在前面手动 // 注册了list里的内容对象,所以会取到,但是生成的wsdl里是没有的,所以依赖wsdl的wsdl2java生成的 // 客户端程序就有问题了。 // System.out.println("MenuNodeList().size() = " + ret.getSysMenuNodeList().size()); // List<MenuNodeInterface> reList=ret.getSysMenuNodeList(); //以下是数组形式的调用 System.out.println("MenuNodeList().length = " + ret.getSysMenuNodeList().length); MenuNodeInterface[] reList=ret.getSysMenuNodeList(); for(MenuNodeInterface mni : reList){ System.out.println("菜单名称:"+mni.getS_Caption()); } } catch (Exception e) { e.printStackTrace(); } } }
其他的类参照上一篇文章,没有修改
配置文件也没有任何变化
OK,附件是我用wsdl2java生成的客户端类,和自己写的测试调用类,打包上传了,老规矩,代码里的报名和有些配置名字自己修改,我就不去除了
参考文章
http://forums.sun.com/thread.jspa?threadID=5405862
http://www.javalobby.org/java/forums/t84343.html
- wsdl2java生成的客户端.rar (7.5 KB)
- 下载次数: 56
- user-guide.pdf (90.7 KB)
- 下载次数: 70
发表评论
-
【Java TCP/IP Soket】— 消息边界的问题解决
2015-08-11 09:47 1462转自:http://blog.csdn.net/ ... -
java中volatile解释
2015-05-28 16:28 727http://www.cnblogs.com/aigongs ... -
Java中的substring真的会引起内存泄露么?
2015-05-27 13:18 962转: http://droidyue.com/blog/ ... -
成为Java GC专家(4)—Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响
2015-05-27 12:24 635转:http://www.importnew.com ... -
成为Java GC专家(3)—如何优化Java垃圾回收机制
2015-05-27 12:23 802转:http://www.importnew.com ... -
成为JavaGC专家(2)—如何监控Java垃圾回收机制
2015-05-27 12:20 656转:http://www.importnew.com ... -
成为JavaGC专家(1)—深入浅出Java垃圾回收机制
2015-05-27 12:16 521转:http://www.importnew.com ... -
《深入分析Java Web技术内幕》-样章示图总结
2013-01-17 11:46 1329试读完本书的样章章节后,感受颇深,其实单从样 ... -
eclipse中(装了插件m2eclipse后的)导入maven工程显示"感叹号"
2013-01-15 16:02 7389有时候导入一些开源工程(maven结构的),在 ... -
(转)分析模式 之 参与者(Party)
2012-10-22 16:39 965在我们分析模型的时 ... -
(转)java.sql.SQLException: (无法从套接字获取更多数据)数据大小超出此类型的最大值
2012-10-22 16:38 5534转至:http://linwei-211.i ... -
有关hashmap,hashset的相关总结
2011-09-16 17:32 3063这篇转自http://hi.baidu.com ... -
有关JAVA异常和错误(ERROR)的处理
2011-09-15 20:41 19189最近遇到有关ERROR的处理问题,下面这篇文章 转至: ... -
XFire 、Axis2、CXF、JWS、java6 区别 (转)
2011-06-13 22:50 1932XFire VS AxisXFire是与Axis2 并列的 ... -
转载[Connection reset,Connection reset by peer,Software caused connection abort :]
2011-06-08 13:16 10003Connection reset,Connection ... -
java实现一个栈,并提供取该栈中最大数的方法,复杂度O(1)
2011-06-07 15:18 2169记得是哪个面试题里的,这里只想到一个简单的方法,大家看看 ... -
Listener Servlet和filter的应用
2011-05-16 22:21 898下面这段话是小总结: Listener是Ser ... -
转载【有关JSP中的转发和重定向用法】
2011-05-15 19:05 1761转自: http://blog.csdn.net/cyhjr ... -
转载【Java对象的强、软、弱和虚引用】
2011-05-13 22:47 8991.Java对象的强、软、弱和虚引用 在JDK 1.2以 ... -
有关JNDI的理解
2011-04-14 11:22 978JAVA EE规范里的jndi是为了解决下面两个问题: ...
相关推荐
<version>1.4</version> </dependency> <!-- 添加Spring Web Services依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId> </...
而单独的"mail.jar"和"activation.jar"文件,通常需要与Axis1.4一起部署,以提供完整的邮件处理和数据激活功能。 在实际应用中,开发者会解压axis-bin-1_4.tar.gz,配置相关设置,然后利用包含的工具生成Web服务...
通过以上步骤,你可以在Spring Boot应用中成功集成Axis1.4并创建和部署SOAP Web服务。这个过程中涉及的知识点涵盖了Spring Boot的启动配置、依赖管理、Web服务的创建与暴露、以及应用的测试与部署等多个方面。
5. **配置文件**:如server.xml和axis.properties,这些文件控制Axis的行为和配置。 在标签“axis1.4”中,我们可以推测这个压缩包专门针对Axis的1.4版本,该版本可能修复了之前版本的一些已知问题,同时保持向后...
<groupId>org.apache.axis2</groupId> <artifactId>axis2</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-...
本文将深入探讨如何使用Axis1.4生成客户端,以及与之相关的知识点。 1. **Web服务基础**: Web服务是通过HTTP协议传输数据的一种方式,它允许不同的系统间进行互操作。WSDL(Web Services Description Language)...
4. **JAX-RPC兼容性**:Axis1遵循Java API for XML Processing (JAX-RPC) 规范,使得与J2EE应用服务器集成更加容易。 然而,随着Web服务技术的发展,Axis1的一些局限性逐渐显现,如性能较低、代码生成复杂等,因此...
5. **客户端生成**:同样,Axis1.4可以从WSDL文件自动生成Java客户端代码,这使得开发者可以快速创建与Web服务交互的客户端应用程序。 6. **模块和Policy**:Axis1.4支持模块化架构,允许添加额外的功能或扩展。...
4. **集成Web服务**: 在集成Web服务时,Axis1.4可以作为一个客户端或者服务器端的栈。作为客户端,它可以自动生成Java stubs,使开发者能够像调用本地方法一样调用远程Web服务。作为服务器端,它可以将Java类自动...
1. **axis.jar**:这是 Axis1.4 的核心库,包含了处理 SOAP 消息、生成 WSDL(Web Services Description Language)文件、执行服务调用等功能。它提供了基于 Java 的 Web 服务实现,让开发者可以轻松创建和调用 Web ...
使用-axis.wsdl选项运行wsdl2java工具,指定你的服务类,它将自动生成对应的WSDL文件。 2. **从WSDL生成服务端代码**: 反之,如果你有一个WSDL文件,可以使用Axis1.4将其转换为Java服务端代码。同样,确保Eclipse...
当我们需要在Spring Boot应用程序中集成Web服务时,Axis1.4提供了一个强大的工具。 首先,我们需要了解**Spring Boot**。它是一个基于Spring框架的脚手架,旨在简化创建独立的、生产级别的基于Spring的应用程序。...
在实际开发中,Apache Axis1.4常用于企业级应用集成,例如B2B系统之间的数据交换,或者为现有Java应用程序提供Web服务接口。它也可以与EJB、Spring等框架集成,构建复杂的分布式系统。 总结,Apache Axis1.4虽已...
在标题和描述中提到的"axis-bin-1_4.zip"和"Axis1.4-bin"是指 Axis 1.4 的二进制发行版,这个版本的AXIS包含了运行和开发Web服务所需的所有必要组件。"axis-1_4.rar"可能是同一版本的另一种压缩格式,而"axis-bin-_...
7. **错误处理和调试**:Axis提供了一套完整的错误处理机制,可以帮助开发者在开发过程中定位和解决问题。它还支持详细的日志记录,便于调试。 8. **国际化支持**:Axis支持多语言环境,可以处理不同地区的字符集和...
Apache Axis1.4是历史悠久的一款开源SOAP(Simple Object Access Protocol)服务器和客户端库,它主要用于构建Web服务。这款工具在2003年发布,是Apache软件基金会的一部分,旨在简化XML-RPC和SOAP的实现。由于其...
Web服务(Web Service)是一种基于网络的、分布式的模块化组件,它提供了标准的方法来让不同的应用程序在Internet上相互通信。Axis1.4是Apache Axis的一个版本,它是一个流行的开源工具,用于实现和部署Java Web服务...
Axis1.4可以与EJB(Enterprise JavaBeans)、Spring框架、JMS(Java Message Service)等其他Java技术无缝集成,扩大了Web服务的使用范围。 10. **性能优化**: 虽然Axis1.4相较于现代的Web服务框架(如Apache ...
标题中的"Axis1.4相关jar包及配置"指出,这个压缩包包含了Axis1.4框架所需的库文件和关于如何配置与使用的详细说明。Axis是一个开源的Web服务工具包,主要用于创建和部署SOAP(简单对象访问协议)服务,它是Apache ...