我有一个在 GlassFish 上部署了 Web 服务的工作解决方案,当客户端向 Web 服务发送 XML 请求时,我从 SOAPBody 中提取第一个子节点。这适用于在 Windows 7、Server 2003 和 Server 2008 R2 上运行的 GlassFish 3.1.1 和 java 运行时 1.6.0_06-b02。
我被要求在 Ubuntu 12.10 上运行的 GlassFish 3.1.2 和 java runtime 1.7.0_09 上部署解决方案
当使用我在 SOAPEnvelope 的 XML 中没有空格的测试工具运行时,3.1.1 和 3.1.2 系统都可以正常工作,但是,如果我使用 SoapUI 发送包含空格的消息,则 Window 安装工作正常,而 Ubuntu版本引发强制转换异常。
当我尝试运行以下代码片段(分配给 Web 服务的消息处理程序)时:
public boolean handleMessage(SOAPMessageContext messageContext) {
SOAPElement requestElt = (SOAPElement) messageContext.getMessage().getSOAPBody().getFirstChild();
// Do things here
}
当信封包含空格时,将引发以下异常:
com.sun.xml.messaging.saaj.soap.impl.TextImpl cannot be cast to javax.xml.soap.SOAPElement
谁能帮我解释一下这个问题?