HAPI ライブラリーを使用して HL7 メッセージを XML に変換するトランスフォーマー Bean を使用して、単純な Camel ルートを作成しました。「mvn camel:run」を使用して実行すると、ルートが機能します。(OSGi バンドルとして) ServiceMix にデプロイすると、メッセージを XML に解析しようとすると、実行時にルートが例外をスローします。
Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.xerces.parsers.DOMParser.<init>(Lorg/apache/xerces/xni/parser/XMLParserConfiguration;)V" the class loader (instance of org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5) of the current class, ca/uhn/hl7v2/parser/XMLParser, and the class loader (instance of <bootloader>) for resolved class, org/apache/xerces/parsers/DOMParser, have different Class objects for the type org/apache/xerces/xni/parser/XMLParserConfiguration used in the signature
at ca.uhn.hl7v2.parser.XMLParser.<init>(XMLParser.java:108)[194:ca.uhn.hapi.osgi-base:1.2]
at ca.uhn.hl7v2.parser.XMLParser.<init>(XMLParser.java:99)[194:ca.uhn.hapi.osgi-base:1.2]
at ca.uhn.hl7v2.parser.DefaultXMLParser.<init>(DefaultXMLParser.java:77)[194:ca.uhn.hapi.osgi-base:1.2]
at simple.messaging.app.SimpleTransformer.transform(SimpleTransformer.java:26)[223:SimpleMessagingApp2:0.0.1.SNAPSHOT]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.6.0_29]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[:1.6.0_29]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_29]
at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_29]
at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:329)[89:org.apache.camel.camel-core:2.8.0.fuse-06-11]
at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:231)[89:org.apache.camel.camel-core:2.8.0.fuse-06-11]
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:171)[89:org.apache.camel.camel-core:2.8.0.fuse-06-11]
... 43 more
Camel-HL7 機能がインストールされた ServiceMix 4.4.2 を使用しています。JDK 1.6u29。バンドルを構築するための Apache Felix maven プラグイン。
SimpleTransformer.java の 26 行目:
XMLParser xmlParser = new DefaultXMLParser();
XMLParser/DefaultXMLParser は、Camel-HL7 機能がインストールされると自動的にデプロイされるように見える hapi-osgi-base バンドルからインポートされます。hapi-osgi-base バンドルには、xercesImpl-2.4.0.jar が組み込まれています。