Mirth は ActiveMQ JMS トピックから Java オブジェクトを受信しています。Mirth チャネルでソース コネクタのインバウンド データ型をDelimited Textに設定し、Connector Type はJMS Readerです。preprocessor
フェーズでは、この Java オブジェクトを XML にマーシャリングしたいと考えています。ロガーをこのように配置しました。
logger.info("incoming data "+message);
そしてそれはOrderDetails@240aaf81を印刷しています
今、Java オブジェクトを XML にマーシャリングするためのカスタム Java クラスを呼び出しています。
// Modify the message variable below to pre process data
logger.info("incoming data "+message);
var object = new Packages.coms.controller.JAXBMarshalling();
object.marshallJavaObjectToXml(message);
return message;
着信メッセージをメソッドに渡すときに、メソッドがカスタム Java オブジェクトをメソッド パラメータとして想定しているため、メソッドが存在しないというエラーが表示されますが、文字列として渡されます。メソッドは次のようになります。
public void marshallJavaObjectToXml(OrderDetails orderDetails) {
JAXBContext jaxbContext;
try {
File file = new File(
"C:\\Program Files (x86)\\Mirth Connect\\conf\\xml\\xmlrepresentation.xml");
jaxbContext = JAXBContext.newInstance(OrderDetails.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(orderDetails, file);
jaxbMarshaller.marshal(orderDetails, System.out);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
オブジェクトが渡されるクラスは次のようになります。
@XmlRootElement
public class OrderDetails implements Serializable{
private static final long serialVersionUID = -4617153110762983450L;
private Long mrn;
private Long orderNo;
private Long patientId;
private Long orderId;**strong text**
private Long encounterId;
}
これらの 2 つのクラスで jar ファイルを作成し、Mirth のcustom-libフォルダーに配置しました。Mirth のpreprocessor
スクリプトで実際の Java オブジェクトを取得するにはどうすればよいですか? Mirth バージョン 2.2.1.5861 を使用しています