WebObjects/Web 服务/常见问题和故障排除
外观
如果你遇到以下异常
Caused by: java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:396) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.setProperty(SAXParserImpl.java:395) at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:246) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538) at org.apache.axis.Message.getSOAPEnvelope(Message.java:376) at org.apache.axis.client.Call.invokeEngine(Call.java:2583) at org.apache.axis.client.Call.invoke(Call.java:2553) at org.apache.axis.client.Call.invoke(Call.java:2248) ... 5 more
这很可能是因为你使用的是 Java 1.5 和 Axis 1.1。如果你想让你的客户端在 Java 1.5 上运行,你需要升级到 Axis 1.2RC2。
如果在 WebObjects 5.4.x 中,你遇到通过 HTTPS(通过 WebObjects Apache 适配器)连接到你的 Web 服务时出现异常,并出现以下错误
org.xml.sax.SAXParseException: Premature end of file. at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)) ... more
你需要在 file server.wsdd 文件中添加更多信息,以告知 Apache AXIS 在它认为传输机制是 'https' 时该怎么做。AXIS 将根据 Apache WebObjects 适配器转发的 HTTP 头部信息做出此判断。如果没有条目告诉 AXIS 如何处理 'https',它将假设来自适配器的传入数据通过 SSL 加密,即使适配器和实例之间的通信是明文的。要更改 AXIS 的行为,将 file server.wsdd 文件从
<transport name="http"> <requestFlow> <handler type="HTTPActionHandler"/> <handler type="URLMapper"/> </requestFlow> </transport>
更改为
<transport name="http"> <requestFlow> <handler type="HTTPActionHandler"/> <handler type="URLMapper"/> </requestFlow> </transport> <transport name="https"> <requestFlow> <handler type="HTTPActionHandler"/> <handler type="URLMapper"/> </requestFlow> </transport>
有关使用 Axis 客户端的基于 cookie 的会话的更多信息,请阅读使用 Axis 在 Java 中使用部分。