2011-03-29 5 views
0

Eclipse를 사용하여 제 3 자 wsdl이 제공된 Java 클라이언트 코드 스텁을 생성했습니다. 클라이언트는 훌륭하게 작동하고, 내가해야 할 일을 웹 서비스에 액세스 할 수 있습니다.x2를 axis2에서 생성 된 java 객체로 비 직렬화하는 방법

이제 웹 서비스에 연결할 필요없이 실행할 수있는 단위 테스트를 작성하고 싶습니다. x2 파일을 자바 클라이언트 스텁 코드의 자바 객체 중 하나로 역 직렬화하기 위해 axis2 스택 내에서 어떤 메커니즘을 사용할 수 있습니까?

예를 들어, 클라이언트 스텁 코드의 클래스 중 하나는 "Contact"입니다. 대개 비누 요청에서 발견되는 XML을 모방 한 xml 파일이 있다고 가정 해보십시오. 어떻게 그것을 자바 연락처 개체로 역 직렬화 할 수 있습니까?

이전에 XMLBeans를 사용해 왔지만, 자바 클라이언트가 이미이 비 직렬화를 어딘가에서하고있는 것처럼 보이기 때문에 쉬운 방법이 있기를 바랍니까? 어쩌면 축 2에는 XML의 청크를 가져 와서 Java 객체를 반환하는 메소드가 있습니까?

는 UPDATE :

이 시도 :

String packageName = Contact.class.getPackage().getName(); 
JAXBContext jc = JAXBContext.newInstance(packageName); 

나는이 얻을 : 다음

java.lang.AssertionError: javax.xml.bind.JAXBException: "com.sforce.soap._2006._04.metadata" doesnt contain ObjectFactory.class or jaxb.index 

,이 시도 :

Contact c = new Contact(); 
JAXBContext jc = JAXBContext.newInstance(c.getClass()); 

을하지만 그때 나는 예외가 그 수업 중 하나가 tact 클래스 사용 does not have a no-arq default constructor

나는 이것이 쉽고 빠를 것이라고 기대했지만, 축 2를 완전히 깨우고 jaxb를 사용하는 방법을 알기 전까지는 수동으로 XML을 파싱 할 것입니다.

답변

1

이것을 축에서 "언 마샬링"이라고합니다. org.apache.axis2.jaxws.message.databinding.JAXBUtils.getJAXBUnmarshaller (JAXBContext 컨텍스트)를 살펴보십시오. 언 마샬 러가 생기면 객체를 다시 비 직렬화하여 객체로 만들 수 있습니다.

+0

팁 주셔서 대단히 감사드립니다. 불행히도, 그것은 내가 기대했던 것보다 더 힘들다는 것이 증명되었습니다. 클래스 패스에 JAXBUtils가 표시되지 않습니다. 내가 시도한 것에 대한 업데이트 된 질문을 참조하십시오. – Upgradingdave

관련 문제