2011-05-14 4 views
6

나는 서버 측 클래스가 있습니다 ForumEntry을, 나는 ForumEntry의 목록을 반환하는 웹 서비스가 있습니다JAX-WS 클라이언트에서 서버 측 클래스를 재사용하는 방법은 무엇입니까?

@WebService(name="ForumGeneral",serviceName="ForumGeneralService") 
public class ForumGeneralService { 

    @WebMethod 
    public List<ForumEntry> getLatestTopics(String keyword,int count){ 
    ... 
    } 
} 

웹 서비스 클라이언트를 생성하기 위해 wsimport의를 사용하여, 그것은 잘 완료,하지만 새로운 ForumEntry 유형의 생성 웹 서비스를 기반으로합니다. 웹 서비스의 본질은 클라이언트와 서버 측이 분리된다는 것입니다.

하지만 서버 측 ForumEntry를 다시 사용하고 클라이언트 측 더미 클래스를 만들지 않으려면 어떻게해야합니까?

게시물을 발견 : http://jamablog.blogspot.com/2007/08/how-to-make-jax-ws-client-reuse_22.html. ,

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "forumEntry", propOrder = { 
    "forumId", 
    "forumName", 
}) 
public class ForumEntry 

다음 에피소드 파일을 생성에서는 schemagen을 사용 후 -b 매개 변수를 사용하여 wsimport의에 전달 :

나는 내 서버 측 ForumEntry 클래스에 JAXB 주석을 추가, 아이디어를 따르십시오. 어떻게하는 모든

<message name="getLatestTopics"> 
<part name="parameters" element="tns:getLatestTopics"></part> 
</message> 
<message name="getLatestTopicsResponse"> 
<part name="parameters" element="tns:getLatestTopicsResponse"></part> 
</message> 

그래서 : 나는 'forumEntry 맞아 WSDL에 표시되지 의미합니다 생각

[ERROR] SCD "~forumEntry" didnt match any schema component 

:하지만 생성 된 에피소드 파일로 문제가'forumEntry '에 대한 항목이 있어요 서버 측 클래스를 재사용하기 위해 여기에 맞는 부분이 있습니까?

답변

0

스키마 엔트리에 ForumEntry 클래스를 추가해야 클라이언트가이를 생성 할 수 있고 서버 측에서 생성 된 클래스를 사용할 수 있습니다. 또는 ForumEntry와 비슷한 데이터를 포함하는 스키마에 새 클래스를 추가하고, 서버가 ForumEntry 개체의 응답으로 해당 개체를 만들고 해당 개체를 대신 반환하도록합니다.

+0

감사하지만 좀 더 구체적으로 말씀해 주시겠습니까? FourmEntry가 유형 인 동안 나는 List를 반환합니다. 양측은 어떻게 Forumentry 수업을 사용할 수 있습니까? 감사. – Andrew

+0

당신은 클라이언트 측에서 ForumEntry 클래스를 생성하고 그것을 사용해야 할 것입니다. –

+0

이 질문은 오래되었지만 비슷한 질문이 있습니다. 문제는 이미 데이터 유형으로 일부 클래스를 사용하는 서버 측 코드와 이러한 클래스의 유틸리티 메소드를 많이 사용하고 있다는 것입니다. 서버 측이 클라이언트에서 생성 된 클래스를 사용하도록 변경하면 주요 작업이 될 것입니다 ... –

관련 문제