シンプルなRESTインターフェースをデプロイしました。私のRESTサービスがこのコンテキストパスにデプロイされているとしましょう:
http://localhost:8080/Engine/services/Evaluation
次に、次のようにURLを呼び出します。
http://localhost:8080/Engine/services/Evaluation?_wadl
XML出力を見ることができます:
<application>
<grammars/>
<resources base="http://localhost:8080/Engine/services/Evaluation">
<resource path="/Evaluation/">
<resource path="initializeEvaluation/{localeCode}">
<param name="localeCode" style="template" type="xs:string"/>
<method name="GET">
<request>
<representation mediaType="application/octet-stream"/>
</request>
<response>
<representation mediaType="application/json"/>
</response>
</method>
</resource>
</resource>
</resources>
</application>
問題は、ブラウザからURLを使用してメソッドを呼び出す方法です。
私は入力しようとしました:
http://localhost:8080/Engine/services/Evaluation/initializeEvaluation?localeCode=en-GB
しかし、私は持っています:
2013-01-30 11:22:13,477 [http-bio-8080-exec-3] WARN JAXRSInInterceptor - No root resource matching request path /Engine/services/Evaluation/initializeEvaluation has been found, Relative Path: /initializeEvaluation. Please enable FINE/TRACE log level for more details.
2013-01-30 11:22:13,479 [http-bio-8080-exec-3] WARN WebApplicationExceptionMapper - javax.ws.rs.NotFoundException
私はRESTで非常に新しいですが、私が理解している限り、URLは上記のようになっているはずです。なぜ私は例外を取得しているのですか?
私のJavaインターフェース:
@Path("/Evaluation/")
@Produces(MediaType.APPLICATION_JSON)
public interface EvaluationService {
@GET
@Path("initializeEvaluation/{localeCode}")
EvaluationStatus initializeEvaluation(ClientType client, @PathParam("localeCode") String localeCode)
throws EvaluationException;
}
Apache CXF 2.7.0、JDK 1.7、Tomcat7を使用しています。