Web邏輯的版本是12c。JaxBMarshaller中定義的自定義CharacterEscapeHandler在Jetty中工作,但不在Weblogic中
所以我們具有雙&問題與JaxBMasheller所以我們定義了自己的CharacterEscapeHandler,基本上什麼都不做:
marshaller.setProperty(CharacterEscapeHandler.class.getName(),
new CharacterEscapeHandler() {
@Override
public void escape(char[] ch, int start, int length, boolean isAttVal,
Writer out) throws IOException {
out.write(ch, start, length);
}
});
這在碼頭,在這裏我們做我們的大多數測試的偉大工程。然而,一旦我們部署這個到本地WebLogic實例,我們得到的異常:
java.lang.IllegalArgumentException異常:XML編組異常 在com.hilton.api.ws.view.xml.XmlViewRenderer.renderMergedOutputModel(XmlViewRenderer.java: 101) 在org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 在org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060) 在org.springframework。 web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet。 java:647) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
任何想法都會受到歡迎。提前致謝。
其中的WebLogic版本您使用的?你能發佈完整的堆棧跟蹤嗎?它是否包含任何'org.eclipse.persistence.jaxb'引用? –
@BlaiseDoughan TY看着這個。 weblogic的版本是12c,持久性的唯一參考是: 引起:javax.xml.bind.PropertyException:name:com.sun.xml.bind.marshaller.CharacterEscapeHandler value:xxx.api.ws.marshaller。 [email protected] at org.eclipse.persistence.jaxb.JAXBMarshaller.setProperty(JAXBMarshaller.java:590) at xxx.api.ws.marshaller.xml.jaxb.JaxbMarshaller.marshal(JaxbMarshaller.java: 139) 那夠了嗎? –
好吧,如果您使用Jetty進行測試,您當然也可以在Jetty上部署到生產環境。我的猜測是你在Weblogic上有一些額外的依賴關係,上次使用它(幾年前)他們傾向於將javax api與它們的實現捆綁在一起,所以你可能會在那裏發生衝突。 –