当前位置: 首页 > 面试题库 >

CXF-ClassCastException(SEIStub / ClientProxy)

马国源
2023-03-14
问题内容

我正在尝试建立客户端jar文件来访问Web服务。我将jar包含在进行客户端Web服务调用的servlet / war中。我收到以下错误:

INFO: 2011 Apr 14 14:57:32,780 MDT [http-thread-pool-8181(4)] ERROR     my.package.ClientServlet - Caught exception
java.lang.ClassCastException: com.sun.xml.ws.client.sei.SEIStub cannot be cast to org.apache.cxf.frontend.ClientProxy
at org.apache.cxf.frontend.ClientProxy.getClient(ClientProxy.java:93)
at my.package.Client.<init>(Client.java:54)
at my.package.ClientServlet.testService(TestServlet.java:118)

我碰到了这个帖子http://yaytay.wordpress.com/2010/03/06/lsned-29-persuading-jdk-6-to-
use-cxf-classes-rather-than-its-own-avoiding-seistub
/

表示要解决此问题,您需要将其cxf-rt- frontend-jaxws作为依赖项包括在内,这是我要做的。因此,这不是我的问题/解决方案。

我的客户端jar pom具有以下依赖关系:

<properties>
    <cxf.version>2.3.3</cxf.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-ws-security</artifactId>
        <version>${cxf.version}</version>
    </dependency>
</dependencies>

servlet战争在其lib中包含以下内容:

asm-3.3.jar
bcprov-jdk15-1.45.jar
commons-logging-1.1.1.jar
cxf-api-2.3.3.jar
cxf-common-schemas-2.3.3.jar
cxf-common-utilities-2.3.3.jar
cxf-rt-bindings-soap-2.3.3.jar
cxf-rt-bindings-xml-2.3.3.jar
cxf-rt-core-2.3.3.jar
cxf-rt-databinding-jaxb-2.3.3.jar
cxf-rt-frontend-jaxws-2.3.3.jar
cxf-rt-frontend-simple-2.3.3.jar
cxf-rt-ws-addr-2.3.3.jar
cxf-rt-ws-security-2.3.3.jar
cxf-tools-common-2.3.3.jar
geronimo-javamail_1.4_spec-1.7.1.jar
jaxb-impl-2.1.13.jar
log4j-1.2.14.jar
neethi-2.0.4.jar
my-client-cxf-1.0.jar
serializer-2.7.1.jar
slf4j-api-1.4.2.jar
slf4j-log4j12-1.4.2.jar
stax2-api-3.0.2.jar
woodstox-core-asl-4.0.8.jar
wsdl4j-1.6.2.jar
wss4j-1.5.11.jar
xalan-2.7.1.jar
xml-resolver-1.2.jar
XmlSchema-1.4.7.jar
xmlsec-1.4.4.jar

我还阅读了一些有关javax.xml.ws.spi.Provider文件的文章,但是还没有找到详细说明文件应命名,包含和放置的内容的引用。

有人能指出我正确的方向吗?


问题答案:

解决方案是在战争WEB-INF中包含一个sun-web.xml(或glassfish-
web.xml)文件。请参阅如何在Glassfish的Metro上选择CXF

编辑

glassfish-web.xml的内容:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN' 
    'http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd'>

<glassfish-web-app>
    <!-- Need this to tell Glassfish not to load the JAX-WS RI classes so it will 
        use the CXF ones instead -->
    <class-loader delegate="false" />
</glassfish-web-app>


 类似资料:
  • 下面是我正在使用的代码:

  • 问题内容: 当我调用并将其强制转换为该异常时。 抛出它的代码: 但是,并非每次都这样做。在大多数情况下,它运行正常,但在其他时候,它会抛出此异常。我不明白为什么会这样。我有什么办法可以阻止这种情况的发生? 问题答案: 您不应假定它是DefaultListModel。使用接口ListModel。JList返回ListModel的内部实现。 如果需要访问基础模型,则应创建它,在JList构造函数中进行

  • 我正在将Weblogic server从9升级到10.3.6。当我试图部署我的ear应用程序时,出现以下异常。 我尝试了各种各样的方法,包括添加一个weblogic应用程序.xml但它仍然不起作用。 我的weblogic.xml 这是我的pom.xml的一部分: 请帮帮忙。谢谢!

  • 我正在尝试创建一个“简单”的一个或多个或多个的关系。我得到以下例外情况: 有人能告诉我我做错了什么吗? 下面你可以找到我的两个实体。 提前谢谢你。 而且

  • 问题内容: 使用来反序列化参数化类的对象会导致的某些值,例如对于由和字段组成的简单类型: 有趣的是,当内联调用方法时,相同的代码也可以工作,即以下语句返回有效值: 的定义也很简单: 将方法更改为非静态不能解决问题。 有任何想法吗? 问题答案: 您想要我的解决方案是ParameterizedType 问题是T,因为Java不知道我的种类并生成T的类型 这是测试更多示例以纠正运行测试 testCont

  • 编辑:许多人对这个问题感到困惑。上限的使用只是为了创建这个示例。我知道这是不正确的。问题是,如果反编译上面的代码,您将看到编译器将t.getTheString(implclass.class)结果类型转换为String,因为它可能不确定类型。我的问题是,如果它是典型的反对会不会更好。在这种情况下,它将调用toString()方法,代码将正常工作。这是Java编译器的问题还是我在这里遗漏了什么?