2

Web サービス関数を作成しました。

@GET
@Path("getusers/")
@Produces({"application/xml","application/json"})
public Object getUsers()
{
    String distanceQuery="SELECT UGL.user_id,UP.fname,UGL.mlatitude,UGL.mlogitude,UGL.mlogitude from user_gps_location UGL,user_profile UP where UGL.user_id=UP.user_id";
    Query queryResult=em.createNativeQuery(distanceQuery);

    userList=queryResult.getResultList();
    return userList;
}

この関数は結果のリストを返します: application/json オプションを選択してブラウザでテストすると、正常に動作します:

結果:

[[1,"Ankit",37.334542,-121.890821,-121.890821],
[1,"Ankit",37.337749,-121.886702,-121.886702],
[1,"Ankit",37.336453,-121.884985,-121.884985],
[1,"Ankit",37.336453,-121.884985,-121.884985],
[1,"Ankit",37.336453,-121.884985,-121.884985],
[1,"Ankit",32.727798,-117.15683,-117.15683],
[1,"Ankit",37.334541666666674,-121.89081999999999,-121.89081999999999],
[1,"Ankit",37.33774833333334,-121.88670166666667,-121.88670166666667],
[1,"Ankit",37.33774833333334,-121.88670166666667,-121.88670166666667],
[1,"Ankit",37.334541666666674,-121.89081999999999,-121.89081999999999],
[1,"Ankit",37.334541666666674,-121.89081999999999,-121.89081999999999],
[1,"Ankit",37.33774833333334,-121.88670166666667,-121.88670166666667],
[2,"Niharika",37.334541666666674,-121.88670166666667,-121.88670166666667],
[2,"Niharika",37.334541666666674,-121.88670166666667,-121.88670166666667]]

しかし、「application/xml」を選択すると、エラーが発生します。

javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.Vector, and Java type class java.util.Vector, and MIME media type application/xml was not found

誰でも私を助けて、何が悪いのか教えてもらえますか?

また、以下のような整形式の結果を返すにはどうすればよいですか?

<id>1</id>
<name>Ankit</name>

クラスを使用する必要があることはわかっていますが、これはネイティブクエリであり、2 つのテーブルを使用し、結果リストも返すため、その方法がわかりません。

4

2 に答える 2

2

変更してみる

public Object getUsers() 

public List<MyObjectType> getUsers()

タイプ userList に一致します。

また、@XMLRootElementドメイン クラスに注釈が存在することを確認します。

于 2012-08-02T00:02:40.133 に答える
0

私はかつて同様の問題を抱えていました。問題の原因は、いくつかのライブラリが欠落していたことでした。(JSONを生成できませんでしたjersey-json。依存関係がありませんでした)。依存関係を追加することにより、問題は解決されました。

次のような簡単な方法でXMLを生成できるかどうかを確認してください。

@GET
@Path("test")
@Produces(MediaType.APPLICATION_XML)
public List<String> test()
{
    List<String> test = new ArrayList<String>();
    test.add("string 1");
    test.add("string 2");
    return test;
}

このメソッドでXMLを生成できない場合はjersey-core-1.13、Maven依存関係として追加してみてください。

<dependency>
    <description></description>
    <groupId>com.sun.jersey</groupId>
    <artefactId>jersey-core</artefactId>
    <version>1.13</version>
</dependency>

使用するJAX-RS実装を自由に選択できる場合は、RESTEasyを確認することを強くお勧めします。Bean Validationのような多くの優れた機能を提供し、非常に使いやすいクライアントライブラリを提供します。

于 2012-08-02T11:06:46.997 に答える