2011-10-06 4 views
1

1 일 반 동안 검색했지만 유용한 대답을 찾을 수 없습니다 ... (어쨌든, 나는 확실히 알고 있습니다. 쓰기 웹 서비스 : D)RESTful Webservice - xml 출력에 사용자 정의 클래스 '.xsd를 제공하는 방법

여기 내 상황입니다 : 내가 설정에 개체 이름은 인사말 수익을 제공하는 편안하고 웹 서비스 환경 triying 오전 :

@XmlRootElement(name = "greeting") 
public class Greeting { 

    private String message; 
    private String name; 

    public Greeting() { 
    } 

    public Greeting(String message, String name) { 
     this.message = message; 
     this.name = name; 
    } 

    @XmlElement 
    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    @XmlElement 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

Greeting.class을Webservice가 Greeting ... thats all의 인스턴스를 반환합니다!

GreetingService.class

@Path("sayHello") 
public class GreetingService { 
     @Context 
     private UriInfo context; 
     public GreetingService() { 
     } 

     @GET 
     @Produces("application/xml") 
     public Greeting getJson(@QueryParam("name") String name) { 
      return new Greeting(getGreeting(), name); 
     } 

     private String getGreeting() { 
      return "Good " + (Calendar.getInstance().get(Calendar.AM_PM) == Calendar.AM ? "Morning" : "Afternoon"); 
     } 
} 

그리고 브라우저의 결과는 Greeting.class의 상세한 구조에 대해 주어진 정보가없는이 브라우저

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<greeting> 
    <message>Good Afternoon</message> 
</greeting> 

입니다 :( 하지만 웹 서비스에 대해 이야기하는 다른 클라이언트가 필요할 수도 있습니다 (단순한 예입니다. 그러나 단지 예일뿐입니다).

구성해야합니까? 어쩌면 application.wadl? 나는 아무 생각도 없어 - 내가 말했듯이 인터넷 검색을했다! - 거의 2 일 :( 제발 도와주세요 을 BTW - 내가

어쩌면 넷빈즈, 자바 7, JEE6 저지


EDIT를 사용하고 I 내가를 automaticly 인사말을 위해 필요한 .XSD 스키마를 제공 할 수 있습니다 ... 어떻게 제대로 을 요구하지 않았다 여기에

는 순간에 제공하는 application.wadl,의 ...

<application xmlns="http://research.sun.com/wadl/2006/10"> 
<doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 1.8 06/24/2011 12:17 PM"/> 
    <resources base="http://localhost/iOSWebServices/resources/"> 
     <resource path="greeting"> 
      <method id="greet" name="GET"> 
       <response> 
        <representation mediaType="application/xml"/> 
       </response> 
      </method> 
      <method id="putXml" name="PUT"> 
       <request> 
        <representation mediaType="application/xml"/> 
       </request> 
      </method> 
     </resource> 
    </resources> 
</application> 
,536,

응답 표현에 매개 변수 "요소"가 있어야한다는 것을 알았습니다. 어떻게 설정할 수 있습니까? 예, Netbeans 용 WADL 플러그인을 사용하고 수동으로 입력 할 수 있습니다. 그러나 요소에 대한 스키마 참조 (이 경우 "인사말")를 추가해야합니다. 그래도 인사말에 대한 네임 스페이스를 설정하는 방법을 알지 못합니다. 제대로 클래스 :(


편집

나는 http://www.verborgh.be/articles/2009/11/21/easy-restfull-jax-rs-webservices-and-extended-wadl-on-glassfish-v3-using-ant-/ 이 문서는 내가 아직도 마지막 단계 때의 한 가지 예외가 알고 :) 를 원하는 것을 설명 제가 .. 찾고 있었다 발견 할 수

WADL 세대를 재정의하지만 나는이 버전 버그라고 생각합니다. 저지를 업데이트하거나 해결 방법을 찾으려고합니다!

+0

질문/문제가 정확히 무엇인지 모르시겠습니까? – Qwerky

+0

어쩌면 나는 정확하게 묻지 않았다. 어떻게 내가 인사 장을 위해 필요한 .xsd 스키마를 자동으로 제공 할 수 있을까? –

+0

NetBeans 7을 사용하는 경우 마법사를 사용하고 자동으로 생성 된 GreetingFacadeREST 클래스에 getGreeting을 추가하고 결과를 확인하는 것이 좋습니다. http://netbeans.org/kb/docs/websvc/rest.html – perissf

답변

0

Java 클래스의 XSD를 자동으로 생성 할 수있는 JAXB 스키마 생성 도구 schemagen이 있습니다.당신이 넷빈즈 IDE를 사용하고 있기 때문에

http://download.oracle.com/javaee/5/tutorial/doc/bnbah.html

+0

내 검색 도구도 발견 - 내가 그것을 사용하는 경우. xsd를 내 Java 클래스에 바인딩하거나 XML을 생성하는 방법을 여전히 모릅니다. 어떻게 알 수 있습니까? –

1

를 참조하십시오, 다음은 도움이 될 수

+0

분명히 WADL 문서에는 관련 XML 스키마가 자체적으로 포함되어 있습니다 (잠재적으로 실제로는 확실히). –

관련 문제