1

この問題は、JAX-RS 構成に関連しています。

単一のクラス用に JAX-RS を構成しました。構成はうまくいきました。

@Path(/bean1/)
@Produces("application/xml")
public class class1 {
    @POST
    @Consumes(MediaType.APPLICATION_XML)
    @Produces(MediaType.APPLICATION_XML)
    @Path(/m1)
    public String method1(JAXBElement<String> request) {
    }

    @POST
    @Consumes(MediaType.APPLICATION_XML)
    @Produces(MediaType.APPLICATION_XML)
    @Path(/m2)
    public String method2(JAXBElement<String> request) {
    }
}

以下は jaxrs:server タグです

<jaxrs:server id="bean1" address="/">
    <jaxrs:serviceBeans>
    <ref bean="class1" />
    </jaxrs:serviceBeans>
    <jaxrs:extensionMappings>
    <entry key="xml" value="application/xml" />
    </jaxrs:extensionMappings>
</jaxrs:server>

URL「/bean1/m1」でApache Jerseyクライアントを介して呼び出すことができました


ここで、JAX-RS を使用して別のクラスを構成したいと考えました。したがって、次のように構成を追加しました

@Path(/bean2/)
@Produces("application/xml")
public class class2 {
    @POST
    @Consumes(MediaType.APPLICATION_XML)
    @Produces(MediaType.APPLICATION_XML)
    @Path(/m3)
    public String method3(JAXBElement<String> request) {
    }
}

別の jaxrs:server タグを追加し、アドレスを指定しました。効果的な構成は

<jaxrs:server id="bean1" address="/bean1">
    <jaxrs:serviceBeans>
    <ref bean="class1" />
    </jaxrs:serviceBeans>
    <jaxrs:extensionMappings>
    <entry key="xml" value="application/xml" />
    </jaxrs:extensionMappings>
</jaxrs:server>
<jaxrs:server id="bean2" address="/bean2">
    <jaxrs:serviceBeans>
    <ref bean="class2" />
    </jaxrs:serviceBeans>
    <jaxrs:extensionMappings>
    <entry key="xml" value="application/xml" />
    </jaxrs:extensionMappings>
</jaxrs:server>

URL「/bean1/m1」でWebサービスを再度呼び出そうとしました。

ただし、No root resource matching request path /m1 has been found というエラーを受け取りました。

助けを求めています。

4

1 に答える 1

8

構成を見ると、次の場所にマップされるマッピングがあります。

/bean1/bean1/m1

/bean2/bean2/m3

あなたはおそらく次のようなことをしたいと思うでしょう:

<jaxrs:server id="server" address="/">
  <jaxrs:serviceBeans>
    <ref bean="class1" />
    <ref bean="class2" />
  </jaxrs:serviceBeans>
  <jaxrs:extensionMappings>
    <entry key="xml" value="application/xml" />
  </jaxrs:extensionMappings>
</jaxrs:server>

必要に応じて、同じサーバーに対して 2 つのサービス Bean を定義できます。それはあなたが望むものを与えるはずです。

于 2012-07-30T22:02:33.393 に答える