2
언 마샬링 및 마샬링에 문제가 있습니다.언 마샬링 중 및 마샬링 중에도 낙타 캐스터 오류가 발생하여 매핑 파일을 사용하지 않습니다.
내 입력 :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetDeadlineOffset>
<deadlineCode>DC1</deadlineCode>
<parameters>
<parameter name="P1">Param 1</parameter>
<parameter name="P2">Param 2</parameter>
</parameters>
</GetDeadlineOffset>
내 매핑 :
<?xml version="1.0" encoding="UTF-8"?>
<class name="com.evolvus.training.camel.domain.GetDeadlineOffset">
<map-to xml="GetDeadlineOffset"/>
<field name="DeadlineCode">
<bind-xml name="deadlineCode" />
</field>
<field name="parameters" type="com.evolvus.training.camel.domain.Parameter" collection="collection">
<bind-xml name="parameter" location="parameters">
<class name="com.evolvus.training.camel.domain.Parameter">
<field name="Name">
<bind-xml name="name" node="attribute" />
</field>
<field name="Value">
<bind-xml node="text"/>
</field>
</class>
</bind-xml>
</field>
</class>
내 클래스 : Parameter.java
public class Parameter {
private String name = null;
private String value = null;
//setters and getters
}
,
GetDeadlineOffset.java
public class GetDeadlineOffset {
private String deadlineCode = null;
private Vector<Parameter> paramList = new Vector<Parameter>();
//setters and getters
}
ISO3166Processor.java
public class ISO3166Processor implements Processor {
public void process(Exchange arg0) throws Exception {
GetDeadlineOffset iso4217 = (GetDeadlineOffset) arg0.getIn().getBody();
System.out.println("Unmarshalled Object is: " + iso4217);
arg0.setOut(arg0.getIn());
arg0.getOut().setBody(gdo);
arg0.getOut().setHeaders(arg0.getIn().getHeaders());
}
}
경로 :
<bean id="currencyProcessor" class="com.evolvus.training.camel.processor.ISO3166Processor" />
<camelContext xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<castor id="iso3166"
mappingFile="castor/castor-mapping.xml"
packages="com.evolvus.training.camel.domain"/>
</dataFormats>
<route>
<from uri="file:src/data/in?noop=true"/>
<unmarshal ref="iso3166"/>
<log message="unmarshall" />
<process ref="currencyProcessor" />
<log message="processed" />
<marshal ref="iso3166" />
<log message="reachng output2" />
<to uri="file:src/data/out?fileName=${id}" />
<stop></stop>
</route>
</camelContext>
예외 :
Exhausted after delivery attempt: 1 caught:
java.lang.NullPointerException java.lang.NullPointerException
at org.exolab.castor.mapping.Mapping.loadMapping(Mapping.java:276)
[org.apache.servicemix.bundles.castor-1.3.1_2.jar:] –
The class for the root element 'GetDeadlineOffset' could not be found.
File: [not available]; line: 2; column: 20}
at org.exolab.castor.xml.Unmarshaller.convertSAXExceptionToMarshalException(Unmarshaller.java:794)
[org.apache.servicemix.bundles.castor-1.3.1_2.jar:]
내가 마샬링 경우는 Marshaller의 인스턴스를 사용하고 marshal()
방법 중 하나 *를 호출 로의 전환을 고려해야 말한다. 이것에 대해서도 저에게 해결책을주십시오. 낙타를 사용하여 마샬의 비 정적 방법을 호출하는 방법?
질문에 예외를 추가하십시오! 코멘트가 아닙니다. – MeIr
귀하의 의견을 Melr에게 감사드립니다. 예외 사항을 추가하여 문제를 해결할 수 있습니다.이 문제를 해결할 때 도움을주십시오. – Mohsin6510
누군가가이 문제를 해결하는 데 도움이됩니다 ... – Mohsin6510