2014-05-12 6 views
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.servi‌​cemix.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(Unmarsh‌​aller.java:794) 
[org.apache.servicemix.bundles.castor-1.3.1_2.jar:] 

내가 마샬링 경우는 Marshaller의 인스턴스를 사용하고 marshal() 방법 중 하나 *를 호출 로의 전환을 고려해야 말한다. 이것에 대해서도 저에게 해결책을주십시오. 낙타를 사용하여 마샬의 비 정적 방법을 호출하는 방법?

+1

질문에 예외를 추가하십시오! 코멘트가 아닙니다. – MeIr

+0

귀하의 의견을 Melr에게 감사드립니다. 예외 사항을 추가하여 문제를 해결할 수 있습니다.이 문제를 해결할 때 도움을주십시오. – Mohsin6510

+0

누군가가이 문제를 해결하는 데 도움이됩니다 ... – Mohsin6510

답변

0

이 예외 :

java.lang.NullPointerException java.lang.NullPointerException 
at org.exolab.castor.mapping.Mapping.loadMapping(Mapping.java:276) 
[org.apache.servi‌​cemix.bundles.castor-1.3.1_2.jar:] – 

은 캐스터는 당신의 mapping.xml를 찾을 수 없음을 나타냅니다. jar 파일/classes 디렉토리에 포함되어 있는지 확인하십시오.