【问题标题】:InstantiationException in web service client calling Web Service deployed to JBoss调用部署到 JBoss 的 Web 服务的 Web 服务客户端中的 InstantiationException
【发布时间】:2010-08-20 00:23:32
【问题描述】:

我正在向 JBoss 部署一个使用 @WebService 注释的 StatelessSessionBean。我正在使用 JBoss 生成的 WSDL 来生成客户端存根。我的问题是调用一个返回对象列表的方法。如果列表为空,则调用成功,但如果列表不为空,则会出现以下异常:

com.sun.xml.ws.encoding.soap.DeserializationException: Failed to read a response: javax.xml.bind.UnmarshalException
 - with linked exception:         
[javax.xml.bind.UnmarshalException: Unable to create an instance of com.companyname.api.ws.DataItemType                                                     
 - with linked exception:
[java.lang.InstantiationException]]
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:124)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
    at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
    at $Proxy34.getWorkflows(Unknown Source)
    at com.companyname.api.SimpleClient.go(SimpleClient.java:48)

在网上搜索让我在这里进行了这个讨论:http://forums.java.net/jive/message.jspa?messageID=281780

但是,我已经正确设置了 @XmlSeeAlso 内容,并且它存在于生成的存根类中。我可以确认 DataItemType 类 抽象的,因此尝试实例化它会导致问题也就不足为奇了。我根本不清楚为什么要实例化 DataItemType 类(因为它是抽象的)。这是从服务器返回的 XML(对我来说看起来差不多):

<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
    <env:Header></env:Header>
    <env:Body>
        <ns2:getWorkflowsResponse xmlns:ns2="http://ws.api.companyname.com/">
            <return>
                <id>
                    <identifier>1</identifier>
                    <version>0</version>
                </id>
                <goal>ENROLL</goal>
                <dataItemType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="DataItemTypeText">
                    <attributeName>email</attributeName>
                    <displayName>Email Address</displayName>
                </dataItemType>
                ...
            </return>
        </ns2:getWorkflowsResponse>
    </env:Body>
</env:Envelope>

有谁知道我做错了什么?

【问题讨论】:

    标签: web-services jboss jax-ws jaxb2


    【解决方案1】:

    生成的 WSDL 存在许多问题(请注意,它不是手工制作的)。我没有更改任何具体内容来说明为什么会引发此特定异常(或者为什么生成不正确的 WSDL 时没有失败)。

    一旦我调整了注释以便创建一个有效的 WSDL,我就会遇到我正在使用的 JAX-WS 版本的更多问题。我最终升级了 JBoss 使用的版本,这反过来又导致我需要将较新的 JAX-WS jar 放在我的 JRE 认可目录中。

    我不会更详细地详细说明我所做的事情,因为我所做的任何具体事情都没有解决这个问题。如果其他人看到它,我建议您在用于生成 WSDL 的注释中非常具体,并仔细查看您的 WSDL。

    【讨论】:

    • 我遇到了同样的问题,不知道如何解决。
    • 克里希纳你能给我更多细节吗?我不知道它是否特别相关,但尝试不同的 JAX-WS 版本可能是值得的。此外,对注释非常小心(并意识到不同的版本会以不同的方式处理它们)可能会有所帮助。
    • 是的,我只使用 JAX-WS,我正在制作一个 Pojo 类并将该类作为返回类型放入另一个类。当我试图为显示此错误的该类创建 web 服务时。就像当我给出该类的返回类型时,它会显示错误,例如“不支持返回类型,这可能会导致错误或导致数据丢失。”这就是我得到的错误。
    • 对不起,我真的没有任何建议 :( 你有什么进展吗?如果你把它整理出来,可以添加评论来解释你做了什么。
    • 好吧,让我自己发布我的问题,这样你就会知道什么是真正的概率。你可以提出建议,我不会真的拒绝投票,所以请随时提出任何建议。
    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 2017-07-02
    • 2013-06-29
    • 2011-01-06
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    相关资源
    最近更新 更多