0

我正在尝试从 GAE 连接到 SOAP 服务器。见例子。它在开发服务器上一切正常,但在生产中我在初始化期间收到 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)

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

我上面的意思是你不应该将任何实现 jaxws 的 jar 文件放入你的战争中。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 实现。

这个答案对于了解 jaxws 初始化的工作方式也很有用。

4

1 回答 1

0

经过大量挖掘后,我放弃了 GAE 的 jaxws 实现。工厂类加载器无法找到它们的实现,期间。

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

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

于 2012-07-26T05:27:50.760 回答