记一次在Eclipse中用Axis生成webservice服务端的过程中出现的问题

问题一、

Unable to find config file.  Creating new servlet engine config file: /WEB-INF/server-config.wsdd

找不到这个.wsdd的配置文件,没有自动生成!

原因是使用Eclipse自动生成axis服务端时没有执行的最后一步!如图:

当进行的这一步时,需要接着点击启动服务的按钮,之后Next按钮就会可用,点击Next按钮后就会自动生成这个.wsdd文件!

问题二、

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString: makeTypeElement() was told to create a type......

这个是在发布服务后点击wsdl链接查看http://127....?wsdl文档时发生的错误,但是访问时不输入?wsdl就是一切正常!

出现这个错误是因为接口方法中的参数是一个复杂类型且这个参数的构造函数中还有复杂类型! eq:

<xs:element name="OrderList" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Order" type="tns:OrderType" minOccurs="0" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

上面代码中OrderList是接口方法中的参数且是一个复杂类型,Order也是一个复杂类型。

这个问题不影响Axis的服务端与客户端的调用,这个据说是Axis的一个bug,而且好像不是每次都会出现!不知道什么时候出现,也可能与浏览器有关!......

为了正常显示,也可以对此进行修改, 提取出复杂类型,并给OrderList添加type参数。 eg:

<xs:element name="OrderList" minOccurs="0" type="tns:OrderListType"></xs:element>
<xs:complexType name="OrderListType">
        <xs:sequence>
            <xs:element name="Order" type="tns:OrderType" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

2:)wsdl无法正常显示会影响cxf的一般调用,因cxf的客户端是以wsdl为基础生成的!一般调用方法如下:

  Service ss = new Service (wsdlURL, SERVICE_NAME);
  PortType port = ss.getPort();
  port.getInfo();  

其中wsdl为重点,wsdl的显示会影响调用。

为了避开这个影响,CXF客户端调用服务端时可以适应另一种方法:eq:

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(PortType.class);
factory.setAddress(studioTaskUrl);
port = (PortType)factory.create();

UP.

问题三、

忘记了,想起了再说。

时间: 2024-11-07 15:22:09

记一次在Eclipse中用Axis生成webservice服务端的过程中出现的问题的相关文章

C#根据WSDL文件生成WebService服务端代码

转自:http://www.cnblogs.com/liyi93/archive/2012/01/30/2332320.html 虽然现在已经进入了.NET FrameWork 4.0的时代,WebService也已经逐渐被淘汰,取而代之的是WCF. 但在工作中难免遇到需要兼容旧版本程序和按照以前的文档进行开发. 一般一个已经实现功能的WebService会发布自己的WSDL文件,供客户端调用生成代理类. 但有时是先有server与client交互的接口定义(WSDL)文件,然后由server和

axis2生成webservice服务端返回String[]和String[][]一维数组和二维数组解析

环境:用axis2生成服务端,用aixs做客户端 1:直接返回String[]: public String[] testArr(String name) { String[] ret=new String[]{"一二三四五","上山打老虎",name}; return ret; } 发布后,wsdl为: 而普通返回String方法的格式为: 可以看到,返回String[]比返回String的响应中多了一个参数maxOccurs="unbounded&qu

java axis调用WebService 服务端,客户端

服务端: 1.Calculator package ws; public class Calculator { public int add(int a, int b) { return (a + b); } public int subtract(int a, int b) { return (a - b); } public int multiply(int a, int b) { return (a * b); } public int divide(int a, int b) { ret

C# 利用VS自带的WSDL工具生成WebService服务类

C# 利用VS自带的WSDL工具生成WebService服务类 wsdl /language:c# /n:空间名 /out:D:/类名 webService接口地址

java之wsdl自动生成WebService客户端

在web项目中调用webservice接口,以及创建自己的webservice服务端 由于甲方的服务器并不在外网,编码环境是不能直接访问对方的webservice接口的,所以需要把wsdl文件下载到本地,在通过工具生成代理类. 用java的JDK自带命令wsimport -s . xxx.wsdl生成代理类 其中-s表示生成源代码,不指定的话只会生成.calss字节码文件 中间的点"."表示在当前路径 后面空格接上本地的wsdl文件或者URL,例如http://www.xxx.com/

[原创]DELPHI木马DIY之生成服务端

文章作者:上帝的禁区信息来源:邪恶八进制信息安全团队(www.eviloctal.com)DELPHI木马DIY之生成服务端   我在这里就生成简单的服务端,为什么不先讲服务端的隐藏?因为我觉得生成服务端要好理解一点,简单一点,我们就由浅入深吧,OK,LET'S GO.   网络上其他的生成服务端的方式我不是很清楚,我就用我的方法来和大家讲解(不过还是先声明,我的方法亦是来自于网络,如果和谁的方法相同,请不要说我侵犯版权,因为我也不知道原作者是谁了,我这文章不作商业用途,如果有朋友认为我侵犯了他

axis调用webservice客户端开发

第一步:wsdl2Java.bat文件编写 Axis_Lib表示依赖的jar包路径 Output_Path表示生成的class路径 Package包名 还需要手动更改 -p %Package%表示webservice服务端名称 (注:http://localhost/CHIMSWEB/services/ChimsAppImplService?wsdl) set Axis_Lib="E:\Workspaces\MyEclipse Professional\CHIMS_20151008\WebRoo

jax-ws服务端生成和客户端调用实例

最近公司让基于别的公司的接口写一个自己的接口,接口对于别的公司来说相当于客户端,但对于自己本公司要调用的程序来说,又相当于服务端. 闲来无事,总结下. 先从java自带的service开始 JAX-WS(java api xml webservice)  基于javaAPI的webService实现 用的工具是myeclipse 首先是服务端 1.新建webProject  jax-wsServer  如图: 2.新建包和类如下图 既然是入门例子,咱就越简单越好,关键看好流程 IMService

jax-ws服务端生成和客户端调用实例详解

长时间不写博客,照片都忘记怎么上传了,由于上一篇图片没有上传,所以删掉,重做了一个. 最近公司让基于别的公司的接口写一个自己的接口,接口对于别的公司来说相当于客户端,但对于自己本公司要调用的程序来说,又相当于服务端. 闲来无事,总结下. 先从java自带的service开始 JAX-WS(java api xml webservice)  基于javaAPI的webService实现 用的工具是myeclipse 首先是服务端 新建webProject  jax-wsServer  如图: 新建