【问题标题】:JBoss 6.x throwing java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImplJBoss 6.x 抛出 java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl
【发布时间】:2017-05-18 02:25:15
【问题描述】:

在我们的应用程序中,我们进行 WSDL 服务调用(让我们说“SomeService”)。我们在我们的环境(测试)中使用 JBoss 6.x 和 JDK1.8。我们的应用程序还依赖于 CXF 来提供其他一些服务。应该通过标准 JAXWS 而不是“CXF”调用“SomeService”。默认情况下,c 所有都通过 CXF 路由,这会导致策略问题。因此,我遵循了下面提到的解决方案:

JAX-WS = When Apache CXF is installed it "steals" default JDK JAX-WS implementation, how to solve?

我在我的代码中做了以下更改:

if (previousDelegate.getClass().getName().contains("cxf")) {
         ServiceDelegate serviceDelegate = ((Provider)    Class.forName("com.sun.xml.internal.ws.spi.ProviderImpl").newInstance())
          .createServiceDelegate(SomeService.WSDL_LOCATION,    SomeService.SERVICE_NAME, service.getClass());

         delegateField.set(service, serviceDelegate);
}

此更改在我的本地环境中适用于我(我使用的是 Tomcat 8 +JDK 1.8)。我在测试平台(它是 JBoss 6.x + JDK 1.8)中部署了代码。在测试功能时,我收到以下错误:

java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl from [Module "deployment.MyAPP.war:main" from Service Module Loader]

不确定此错误的原因。有人对此有线索吗?我们是否需要在我们的 JBoss 服务器中进行任何其他更改。由于“com.sun.xml.internal.ws.spi.ProviderImpl”是标准类,并且在 JDK1.8 中可用,我看不出有什么原因会出现上述错误,因为我们的 JBoss 服务器指向 JDK1。 8.

非常感谢您的帮助。

【问题讨论】:

    标签: wsdl jboss6.x


    【解决方案1】:
    • 您的应用程序或应用程序服务器似乎存在类加载问题。

    • ClassNotFoundException 将在第一次引用该类并且类加载器尝试加载它时发生。下次引用该类时,类加载器已缓存未找到的类,并将抛出 NoClassDefFoundError。

    • 确认 ClassNotFoundException 不是由未正确打包的类或其他类加载器设置引起的。此外,请确保在第一次引用该类时不会发生 ClassNotFoundException。

    • 检查 JBoss 路径中是否有符号链接。 这将告诉我们您已部署到应用程序的类,并允许我们检查 com.sun.xml.internal.ws.spi.ProviderImpl 或相关类是否已部署到它。该类随应用程序服务器一起在此目录中提供,我认为这应该是它加载的唯一位置。

      src/jboss-as/thirdparty/sun-jaxws/lib/jaxws-rt.jar

    • 我能找到的唯一参考消息“classLoader 未连接到类”的域(可能未部署?)

    • 如果您正在使用自定义 JAX-WS 实现并且不想使用 JBossWS CXF(EAP 6.x 附带的受支持的 JAX-WS 库),您需要首先从你的部署

    • 完成此操作后,您需要公开代表 JAX-WS 和 SAAJ 实现的 JDK 类。

    • 确保将 sun.internal.saaj 和 sun.internal.ws 的模块依赖项添加到部署中。

    --

    阿努普

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 2011-06-06
      • 1970-01-01
      • 2018-08-12
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多