weblogic 12c 处理指令目标匹配 "[xX][mM][lL]" 是不允许的。
weblogic 12c 处理指令目标匹配 "[xX][mM][lL]" 是不允许的。
我正在将一个ejb 1.0应用迁移到ejb 3.1应用。当前应用在WebLogic Server Version: 12.1.3.0.0上运行,使用jdk 8。为了进行POC,我选择了一个会话bean和一个实体bean,并通过提供更新后的ejb-jar.xml、orm.xml和persistence.xml(如下所示)将它们升级到3.1版本。
我遇到了以下XML解析错误:
weblogic.application.ModuleException: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 6; 不允许处理指令目标与"[xX][mM][lL]"匹配。 at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:114) at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100) at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:175) at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:170) at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:80) at weblogic.work.ContextWrap.run(ContextWrap.java:40) at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:548) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311) at weblogic.work.ExecuteThread.run(ExecuteThread.java:263) Caused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 6; 不允许处理指令目标与"[xX][mM][lL]"匹配。
我确认persistence.xml位于我的ejb-jar/META-INF目录下。如果我从ejb.jar中删除persistence.xml,错误就会消失,会话bean的查找会成功,但实体bean的持久化会失败。所以我认为错误可能出在persistence.xml上。我已将persistence.xml保存为utf-8格式。我还确保之前没有空格,如一些帖子中所建议的。是否有任何指导?
在weblogic 12c中出现"The processing instruction target matching "[xX][mM][lL]" is not allowed"错误的原因是orm.xml文件中的第一个注释导致的:
根据The processing instruction target matching "[xX][mM][lL]" is not allowed的回答 - 在
<?xml
之前不能有任何字符。解决方法是将注释移动到
<?xml
之后,确保在<?xml
之前没有任何字符。以下是修复后的代码:
通过以上修改,可以解决"The processing instruction target matching "[xX][mM][lL]" is not allowed"错误。