Thank you for your answer John. I believe the TerrorMapping.xml is now
included.
I still get this error when deploying on ServiceMix though:
javax.jms.JMSException: Error sending JBI exchange
at
org.apache.servicemix.jms.endpoints.AbstractConsumerEndpoint.onMessage(AbstractConsumerEndpoint.java:575)
at
org.apache.servicemix.jms.endpoints.JmsConsumerEndpoint$1.onMessage(JmsConsumerEndpoint.java:505)
at
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:518)
at
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:479)
at
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.jibx.runtime.JiBXException: Error marshalling XML to Object
at terror.util.JiBXUtil.marshalDocument(JiBXUtil.java:51)
at
terror.util.TerrorJMSMarshaler.populateMessage(TerrorJMSMarshaler.java:19)
at
org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler.createExchange(DefaultConsumerMarshaler.java:99)
at
org.apache.servicemix.jms.endpoints.AbstractConsumerEndpoint.onMessage(AbstractConsumerEndpoint.java:544)
... 10 more
The queue I'm sending the "TerrorTypeRequest1" object to is defined like
this:
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
xmlns:fork="http://henriksenweb.com/FORK">
.....
<jms:consumer service="fork:terrorReceiver"
endpoint="jmsEndpoint"
targetService="fork:terrorDSLRouter"
destinationName="terror.in"
connectionFactory="#connectionFactory"
marshaler="#TerrorJMSMarshaler"/>
</beans>
The "JiBXUtil.marshalDocument" function is defined like this:
public static Source marshalDocument(Object src, String encoding) throws
JiBXException {
Source result = null;
try {
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
IMarshallingContext ctx =
BindingDirectory.getFactory(src.getClass()).createMarshallingContext();
ctx.marshalDocument(src, "UTF-8", null, bOut);
result = new StreamSource(new ByteArrayInputStream(bOut.toByteArray()));
}
catch (Exception e) {
throw new JiBXException("Error marshalling XML to Object",e);
}
return result;
}
The relevant part of the TerrorMapping.xml:
<mapping name="TerrorType1Request" class="terror.model.TerrorType1Request"
ns="http://henriksenweb.com/terror">
<namespace uri="http://henriksenweb.com/terror" default="elements"/>
<value name="buildYear" field="buildYear"/>
<value name="carType" field="carType"/>
<value name="companyCar" field="companyCar"/>
<value name="numberPlate" field="numberPlate"/>
<value name="requestID" field="requestID"/>
<value name="startDate" field="startDate"
serializer="terror.util.DateJiBXSerializer.serialize"
deserializer="terror.util.DateJiBXSerializer.deserialize"/>
</mapping>
And finally the object I'm sending is an instance of the (simple) class
"TerrorType1Request":
import java.io.Serializable;
import java.util.Date;
public class TerrorType1Request implements Serializable {
private static final long serialVersionUID = -507216273438778375L;
private String requestID;
private String numberPlate;
private String carType;
private int buildYear;
private boolean companyCar;
private Date startDate;
public String getRequestID() {
return requestID;
}
public void setRequestID(String requestID) {
this.requestID = requestID;
}
public String getNumberPlate() {
return numberPlate;
}
public void setNumberPlate(String numberPlate) {
this.numberPlate = numberPlate;
}
public String getCarType() {
return carType;
}
public void setCarType(String carType) {
this.carType = carType;
}
public int getBuildYear() {
return buildYear;
}
public void setBuildYear(int buildYear) {
this.buildYear = buildYear;
}
public boolean isCompanyCar() {
return companyCar;
}
public void setCompanyCar(boolean companyCar) {
this.companyCar = companyCar;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
}
So where does it go wrong? Could it be something about namespaces? I don't
think the exception is telling me much.
Kind regards,
Kenneth H