【问题标题】:Error in javax.xml.ws.Service initialization on App EngineApp Engine 上的 javax.xml.ws.Service 初始化出错
【发布时间】:2012-07-25 05:21:27
【问题描述】:

我正在尝试从 GAE 连接到 SOAP 服务器。见example。 它在开发服务器上一切正常,但在生产中我在初始化期间收到 500 错误。经过大量挖掘,我设法捕获了一个 Throwable 并记录了堆栈跟踪:

java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:58)
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:142)
at javax.xml.ws.spi.Provider.provider(Provider.java:102)

这个问题可能与Issue 4910有关。那里的一个建议说:

我上面的意思是你不应该放任何jar文件 将 jaxws 本身实施到您的战争中。 App Engine 运行时 包含 jaxws 的实现,您应该使用它。

在我的类路径中我找到了

  1. xml-apis-1.0.b2,=.jar
  2. jaxb-api.jar
  3. jaxb-impl.jar

它们看起来不像 jaxws 实现,至少据我所知。真的不能没有 jaxb(如果我删除那个 jar,我会得到一个错误)。

欢迎提出任何建议。

[更新] [似乎]3 只是在类路径中包含 jaxb 会导致问题,因此无法找到 GAE 的 jaxws 实现。

This answer 也有助于了解 jaxws 初始化的工作原理。

【问题讨论】:

    标签: java web-services google-app-engine soap jax-ws


    【解决方案1】:

    经过大量挖掘后,我放弃了 GAE 的 jaxws 实现。 Factory 类加载器找不到它们的实现,句号。

    所以我选择了Force.com Web Services Connector 并设法让它工作。 代码生成过程中存在错误,在生成的代码中,GAE 连接器也需要一些修复。

    我很想在 GitHub 上创建一个项目来展示我所做的事情。 这个实现速度更快,还可以设置套接字超时!

    【讨论】:

      猜你喜欢
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多