问题:
一个SOA project中使用到了JMSAdapter. It works in unix envrionment. 然而部署在windows时发现有几个JMS Consumer Composite部署时没有问题,但是使用时或通过EM 去访问时,出现Malformed \uxxxx enconding错误,如下。
java.lang.IllegalArgumentException: Malformed \uxxxx encoding. at java.util.Properties.loadConvert(Properties.java:568) at java.util.Properties.load0(Properties.java:391) at java.util.Properties.load(Properties.java:341) at oracle.tip.adapter.jms.JmsUtil.getProperties(JmsUtil.java:324) at oracle.tip.adapter.jms.JmsUtil.isOracleJMSProvider(JmsUtil.java:592) at oracle.tip.adapter.jms.JmsResourceAdapter.isWLSEndpoint(JmsResourceAd apter.java:171) at oracle.tip.adapter.jms.JmsResourceAdapter.endpointActivation(JmsResou rceAdapter.java:146) at oracle.integration.platform.blocks.adapter.fw.impl.AdapterFrameworkIm pl.endpointActivation(AdapterFrameworkImpl.java:488) at oracle.integration.platform.blocks.adapter.fw.jca.lifecycle.JCAEndpoi ntActivation.performEndpointActivation(JCAEndpointActivation.java:723) at oracle.integration.platform.blocks.adapter.fw.jca.lifecycle.JCAEndpoi ntActivation.activateInboundJcaEndpoint(JCAEndpointActivation.java:706) at oracle.integration.platform.blocks.adapter.fw.jca.lifecycle.JCAEndpoi ntActivation.performActivation(JCAEndpointActivation.java:446) at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterService RevisionRegistry$AdapterServiceRevision.endpointActivation(AdapterServiceRevisio nRegistry.java:604) at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterService RevisionRegistry$AdapterServiceRevision.activate(AdapterServiceRevisionRegistry. java:454) at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterService RevisionRegistry$AdapterServiceRevision.setDefaultRevision(AdapterServiceRevisio nRegistry.java:419) at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterService RevisionRegistry$AdapterServiceSeries.setDefaultRevision(AdapterServiceRevisionR egistry.java:344) at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterService RevisionRegistry$AdapterServiceSeriesSet.setDefaultRevision(AdapterServiceRevisi onRegistry.java:146) at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterService RevisionRegistry.setDefaultRevision(AdapterServiceRevisionRegistry.java:106) at oracle.integration.platform.blocks.adapter.AdapterService.defaultRevi sionChanged(AdapterService.java:401) at oracle.integration.platform.common.CompositeLoaderUtil.processDefault InSeries(CompositeLoaderUtil.java:152) at oracle.integration.platform.kernel.FabricKernelInitializerServlet$1.r un(FabricKernelInitializerServlet.java:923) at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run (WorkManagerExecutor.java:184) at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManag er.java:184) at weblogic.work.DaemonWorkThread.run(DaemonWorkThread.java:30) > oracle.fabric.common.FabricDeploymentException: [JCABinding]
解决方法:
1. 显然这是一个字符串处理问题,某文件有非法字符。
2. Unix环境下工作,windows环境fail, 很有可能是file seperator问题。
3. 找到相关配置文件(property文件,或者xml文件)
4.由于不熟悉这个系统,花了些时间找到了JMSAdapter.rar。在soa\soa\connector\下找到了该文件和相关的deployment文件。反编译相关类查到可能的配置文件为jmsadapter_plan.xml。打开发现果然有期望中的windows文件分隔符"\". 修改并重启server, 两个jms consumer composite工作。