zoukankan      html  css  js  c++  java
  • 记一次在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.

    问题三、

     忘记了,想起了再说。

  • 相关阅读:
    Java 期末考试
    Java 方法重载,方法重写(覆盖),继承等细节注意
    Java 方法(变量)修饰符的使用顺序
    java考试易错题大全
    python获取进程id号:
    C语言如何判断单个数字是否溢出:
    VS2017编译错误:#error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version
    VS2017出现不存在从"CString"到"const char*"的适当转换函数
    Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:
    解决springboot 出现异常: java.net.BindException: Address already in use: bind
  • 原文地址:https://www.cnblogs.com/liangblog/p/5417489.html
Copyright © 2011-2022 走看看