ActiveMQ を介してオブジェクトをキューに送信するときに問題に直面しています。送信するオブジェクトは BrokerRequest で、UUID、優先度 (1、2、3)、および JAXB オブジェクトである DocumentType が含まれています。
私が使用しているコードのブロックは次のとおりです。
DocumentType jaxbDoc = getJaxbFromFile("/home/dev/document.xml");
BrokerRequest brokerRequest = new BrokerRequest(UUID.randomUUID(), 1, jaxbDoc);
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(topic);
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
ObjectMessage objectMessage = session.createObjectMessage(brokerRequest);
producer.send(objectMessage);
connection.close();
メソッド「getJaxbFromFile」は、この Jaxb タイプを表す xml ドキュメントがあるパスを受け取ります。そのメソッドで行うことは、その xml を Jaxb DocumentType にアンマーシャリングして、BrokerRequest オブジェクト内に含めることです。
しかし、objectMessage をブローカーに送信しようとするたびに、この notSerializable の例外を受け取りますが、JaxB に含まれるすべての要素はシリアライズ可能です。そのため、このエラーが発生する理由がわかりません。
Exception in thread "main" java.lang.RuntimeException: jaxb.mapped.elements.xsd.commons.MonetaryTotalType
at org.apache.activemq.command.ActiveMQObjectMessage.storeContent(ActiveMQObjectMessage.java:111)
at org.apache.activemq.command.ActiveMQObjectMessage.setObject(ActiveMQObjectMessage.java:162)
at org.apache.activemq.ActiveMQSession.createObjectMessage(ActiveMQSession.java:381)
at efact.alfa1lab.test.commons.MessageUtils.putMessageOnBroker(MessageUtils.java:184)
at test.commons.MessageUtils.main(MessageUtils.java:97)
Caused by: java.io.NotSerializableException: jaxb.mapped.elements.xsd.commons.MonetaryTotalType
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at org.apache.activemq.command.ActiveMQObjectMessage.storeContent(ActiveMQObjectMessage.java:105)
誰かが私を助けてくれれば本当に感謝しています。誰かがこの問題について手がかりをくれれば感謝します.
============================== MonetaryType のコードは次のとおりです。
import javax.xml.bind.annotation.XmlAccessType;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import oasis.names.specification.ubl.schema.xsd.commonbasiccomponents_2.AllowanceTotalAmountType;
import oasis.names.specification.ubl.schema.xsd.commonbasiccomponents_2.ChargeTotalAmountType;
import oasis.names.specification.ubl.schema.xsd.commonbasiccomponents_2.LineExtensionAmountType;
import oasis.names.specification.ubl.schema.xsd.commonbasiccomponents_2.PayableAmountType;
import oasis.names.specification.ubl.schema.xsd.commonbasiccomponents_2.PayableRoundingAmountType;
import oasis.names.specification.ubl.schema.xsd.commonbasiccomponents_2.PrepaidAmountType;
import oasis.names.specification.ubl.schema.xsd.commonbasiccomponents_2.TaxExclusiveAmountType;
import oasis.names.specification.ubl.schema.xsd.commonbasiccomponents_2.TaxInclusiveAmountType;
/**
*
*
* <pre>
* <?xml version="1.0" encoding="UTF-8"?><ccts:Component xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ccts:ComponentType>ABIE</ccts:ComponentType><ccts:DictionaryEntryName>Monetary Total. Details</ccts:DictionaryEntryName><ccts:Definition>Information about Monetary Totals.</ccts:Definition><ccts:ObjectClass>Monetary Total</ccts:ObjectClass>
* </ccts:Component>
* </pre>
*
*
*
* <p>Java class for MonetaryTotalType complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="MonetaryTotalType">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element ref="{urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2}LineExtensionAmount" minOccurs="0"/>
* <element ref="{urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2}TaxExclusiveAmount" minOccurs="0"/>
* <element ref="{urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2}TaxInclusiveAmount" minOccurs="0"/>
* <element ref="{urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2}AllowanceTotalAmount" minOccurs="0"/>
* <element ref="{urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2}ChargeTotalAmount" minOccurs="0"/>
* <element ref="{urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2}PrepaidAmount" minOccurs="0"/>
* <element ref="{urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2}PayableRoundingAmount" minOccurs="0"/>
* <element ref="{urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2}PayableAmount"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MonetaryTotalType", propOrder = {
"lineExtensionAmount",
"taxExclusiveAmount",
"taxInclusiveAmount",
"allowanceTotalAmount",
"chargeTotalAmount",
"prepaidAmount",
"payableRoundingAmount",
"payableAmount"
})
public class MonetaryTotalType implements Serializable {
@XmlElement(name = "LineExtensionAmount", namespace = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2")
protected LineExtensionAmountType lineExtensionAmount;
@XmlElement(name = "TaxExclusiveAmount", namespace = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2")
protected TaxExclusiveAmountType taxExclusiveAmount;
@XmlElement(name = "TaxInclusiveAmount", namespace = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2")
protected TaxInclusiveAmountType taxInclusiveAmount;
@XmlElement(name = "AllowanceTotalAmount", namespace = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2")
protected AllowanceTotalAmountType allowanceTotalAmount;
@XmlElement(name = "ChargeTotalAmount", namespace = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2")
protected ChargeTotalAmountType chargeTotalAmount;
@XmlElement(name = "PrepaidAmount", namespace = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2")
protected PrepaidAmountType prepaidAmount;
@XmlElement(name = "PayableRoundingAmount", namespace = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2")
protected PayableRoundingAmountType payableRoundingAmount;
@XmlElement(name = "PayableAmount", namespace = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2", required = true)
protected PayableAmountType payableAmount;
/**
*
*
* <pre>
* <?xml version="1.0" encoding="UTF-8"?><ccts:Component xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ccts:ComponentType>BBIE</ccts:ComponentType><ccts:DictionaryEntryName>Monetary Total. Line Extension Amount. Amount</ccts:DictionaryEntryName><ccts:Definition>The total of Line Extension Amounts net of tax and settlement discounts, but inclusive of any applicable rounding amount.</ccts:Definition><ccts:Cardinality>0..1</ccts:Cardinality><ccts:ObjectClass>Monetary Total</ccts:ObjectClass><ccts:PropertyTerm>Line Extension Amount</ccts:PropertyTerm><ccts:RepresentationTerm>Amount</ccts:RepresentationTerm><ccts:DataType>Amount. Type</ccts:DataType>
* </ccts:Component>
* </pre>
*
*
*
* @return
* possible object is
* {@link LineExtensionAmountType }
*
*/
public LineExtensionAmountType getLineExtensionAmount() {
return lineExtensionAmount;
}
/**
* Sets the value of the lineExtensionAmount property.
*
* @param value
* allowed object is
* {@link LineExtensionAmountType }
*
*/
public void setLineExtensionAmount(LineExtensionAmountType value) {
this.lineExtensionAmount = value;
}
/**
*
*
* <pre>
* <?xml version="1.0" encoding="UTF-8"?><ccts:Component xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ccts:ComponentType>BBIE</ccts:ComponentType><ccts:DictionaryEntryName>Monetary Total. Tax Exclusive Amount. Amount</ccts:DictionaryEntryName><ccts:Definition>The total amount exclusive of taxes.</ccts:Definition><ccts:Cardinality>0..1</ccts:Cardinality><ccts:ObjectClass>Monetary Total</ccts:ObjectClass><ccts:PropertyTerm>Tax Exclusive Amount</ccts:PropertyTerm><ccts:RepresentationTerm>Amount</ccts:RepresentationTerm><ccts:DataType>Amount. Type</ccts:DataType>
* </ccts:Component>
* </pre>
*
*
*
* @return
* possible object is
* {@link TaxExclusiveAmountType }
*
*/
public TaxExclusiveAmountType getTaxExclusiveAmount() {
return taxExclusiveAmount;
}
/**
* Sets the value of the taxExclusiveAmount property.
*
* @param value
* allowed object is
* {@link TaxExclusiveAmountType }
*
*/
public void setTaxExclusiveAmount(TaxExclusiveAmountType value) {
this.taxExclusiveAmount = value;
}
/**
*
*
* <pre>
* <?xml version="1.0" encoding="UTF-8"?><ccts:Component xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ccts:ComponentType>BBIE</ccts:ComponentType><ccts:DictionaryEntryName>Monetary Total. Tax Inclusive Amount. Amount</ccts:DictionaryEntryName><ccts:Definition>The total amount inclusive of taxes.</ccts:Definition><ccts:Cardinality>0..1</ccts:Cardinality><ccts:ObjectClass>Monetary Total</ccts:ObjectClass><ccts:PropertyTerm>Tax Inclusive Amount</ccts:PropertyTerm><ccts:RepresentationTerm>Amount</ccts:RepresentationTerm><ccts:DataType>Amount. Type</ccts:DataType>
* </ccts:Component>
* </pre>
*
*
*
* @return
* possible object is
* {@link TaxInclusiveAmountType }
*
*/
public TaxInclusiveAmountType getTaxInclusiveAmount() {
return taxInclusiveAmount;
}
/**
* Sets the value of the taxInclusiveAmount property.
*
* @param value
* allowed object is
* {@link TaxInclusiveAmountType }
*
*/
public void setTaxInclusiveAmount(TaxInclusiveAmountType value) {
this.taxInclusiveAmount = value;
}
/**
*
*
* <pre>
* <?xml version="1.0" encoding="UTF-8"?><ccts:Component xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ccts:ComponentType>BBIE</ccts:ComponentType><ccts:DictionaryEntryName>Monetary Total. Allowance Total Amount. Amount</ccts:DictionaryEntryName><ccts:Definition>The total amount of all allowances.</ccts:Definition><ccts:Cardinality>0..1</ccts:Cardinality><ccts:ObjectClass>Monetary Total</ccts:ObjectClass><ccts:PropertyTerm>Allowance Total Amount</ccts:PropertyTerm><ccts:RepresentationTerm>Amount</ccts:RepresentationTerm><ccts:DataType>Amount. Type</ccts:DataType>
* </ccts:Component>
* </pre>
*
*
*
* @return
* possible object is
* {@link AllowanceTotalAmountType }
*
*/
public AllowanceTotalAmountType getAllowanceTotalAmount() {
return allowanceTotalAmount;
}
/**
* Sets the value of the allowanceTotalAmount property.
*
* @param value
* allowed object is
* {@link AllowanceTotalAmountType }
*
*/
public void setAllowanceTotalAmount(AllowanceTotalAmountType value) {
this.allowanceTotalAmount = value;
}
/**
*
*
* <pre>
* <?xml version="1.0" encoding="UTF-8"?><ccts:Component xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ccts:ComponentType>BBIE</ccts:ComponentType><ccts:DictionaryEntryName>Monetary Total. Charge Total Amount. Amount</ccts:DictionaryEntryName><ccts:Definition>The total amount of all charges.</ccts:Definition><ccts:Cardinality>0..1</ccts:Cardinality><ccts:ObjectClass>Monetary Total</ccts:ObjectClass><ccts:PropertyTerm>Charge Total Amount</ccts:PropertyTerm><ccts:RepresentationTerm>Amount</ccts:RepresentationTerm><ccts:DataType>Amount. Type</ccts:DataType>
* </ccts:Component>
* </pre>
*
*
*
* @return
* possible object is
* {@link ChargeTotalAmountType }
*
*/
public ChargeTotalAmountType getChargeTotalAmount() {
return chargeTotalAmount;
}
/**
* Sets the value of the chargeTotalAmount property.
*
* @param value
* allowed object is
* {@link ChargeTotalAmountType }
*
*/
public void setChargeTotalAmount(ChargeTotalAmountType value) {
this.chargeTotalAmount = value;
}
/**
*
*
* <pre>
* <?xml version="1.0" encoding="UTF-8"?><ccts:Component xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ccts:ComponentType>BBIE</ccts:ComponentType><ccts:DictionaryEntryName>Monetary Total. Prepaid Amount. Amount</ccts:DictionaryEntryName><ccts:Definition>The total prepaid amount.</ccts:Definition><ccts:Cardinality>0..1</ccts:Cardinality><ccts:ObjectClass>Monetary Total</ccts:ObjectClass><ccts:PropertyTerm>Prepaid Amount</ccts:PropertyTerm><ccts:RepresentationTerm>Amount</ccts:RepresentationTerm><ccts:DataType>Amount. Type</ccts:DataType>
* </ccts:Component>
* </pre>
*
*
*
* @return
* possible object is
* {@link PrepaidAmountType }
*
*/
public PrepaidAmountType getPrepaidAmount() {
return prepaidAmount;
}
/**
* Sets the value of the prepaidAmount property.
*
* @param value
* allowed object is
* {@link PrepaidAmountType }
*
*/
public void setPrepaidAmount(PrepaidAmountType value) {
this.prepaidAmount = value;
}
/**
*
*
* <pre>
* <?xml version="1.0" encoding="UTF-8"?><ccts:Component xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ccts:ComponentType>BBIE</ccts:ComponentType><ccts:DictionaryEntryName>Monetary Total. Payable_ Rounding Amount. Amount</ccts:DictionaryEntryName><ccts:Definition>The rounding amount (positive or negative) added to the calculated Line Extension Total Amount to produce the rounded Line Extension Total Amount.</ccts:Definition><ccts:Cardinality>0..1</ccts:Cardinality><ccts:ObjectClass>Monetary Total</ccts:ObjectClass><ccts:PropertyTermQualifier>Payable</ccts:PropertyTermQualifier><ccts:PropertyTerm>Rounding Amount</ccts:PropertyTerm><ccts:RepresentationTerm>Amount</ccts:RepresentationTerm><ccts:DataType>Amount. Type</ccts:DataType>
* </ccts:Component>
* </pre>
*
*
*
* @return
* possible object is
* {@link PayableRoundingAmountType }
*
*/
public PayableRoundingAmountType getPayableRoundingAmount() {
return payableRoundingAmount;
}
/**
* Sets the value of the payableRoundingAmount property.
*
* @param value
* allowed object is
* {@link PayableRoundingAmountType }
*
*/
public void setPayableRoundingAmount(PayableRoundingAmountType value) {
this.payableRoundingAmount = value;
}
/**
*
*
* <pre>
* <?xml version="1.0" encoding="UTF-8"?><ccts:Component xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ccts:ComponentType>BBIE</ccts:ComponentType><ccts:DictionaryEntryName>Monetary Total. Payable_ Amount. Amount</ccts:DictionaryEntryName><ccts:Definition>The total amount to be paid.</ccts:Definition><ccts:Cardinality>1</ccts:Cardinality><ccts:ObjectClass>Monetary Total</ccts:ObjectClass><ccts:PropertyTermQualifier>Payable</ccts:PropertyTermQualifier><ccts:PropertyTerm>Amount</ccts:PropertyTerm><ccts:RepresentationTerm>Amount</ccts:RepresentationTerm><ccts:DataType>Amount. Type</ccts:DataType>
* </ccts:Component>
* </pre>
*
*
*
* @return
* possible object is
* {@link PayableAmountType }
*
*/
public PayableAmountType getPayableAmount() {
return payableAmount;
}
/**
* Sets the value of the payableAmount property.
*
* @param value
* allowed object is
* {@link PayableAmountType }
*
*/
public void setPayableAmount(PayableAmountType value) {
this.payableAmount = value;
}
}
よろしくお願いします。