weblogic 12c 处理指令目标匹配 "[xX][mM][lL]" 是不允许的。

9 浏览
0 Comments

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格式。我还确保之前没有空格,如一些帖子中所建议的。是否有任何指导?

0
0 Comments

在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"错误。

0