0

Tomcat 7.0.34.0 でServlet 3.0 Applicationクラスを使用して RESTful Web アプリケーションを開発しようとしていますが、何も機能していないようです。以前のアプリでは、Jersey ServletContainer アプローチを使用し、すべての REST サービスを web.xml で宣言することに問題はありませんでした。

私の現在の Application サブクラス:

package aaa;

@ApplicationPath("/test")
public class ApplicationConfig extends Application
{
    @Override
    public Set<Class<?>> getClasses ()
    {
        Set<Class<?>> resources = new java.util.HashSet<Class<?>> ();
        resources.add (aaa.TestResource.class);
        return resources;
    }
}

および Web サービス:

package aaa;

@Path("test")
public class TestResource
{
    public TestResource () {}

    @GET
    @Produces("text/html")
    public String getXml ()
    {
        return "TEST SUCCESS";
    }
}

アプリをデプロイしようとすると、Tomcat はコンテキストがリロードされたことを通知します。

INFO: Reloading Context with name [/WebApplication1] has started
Nov 10, 2013 7:06:25 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/WebApplication1] is completed

Web アプリケーション自体はデプロイされています (その JSP ページにアクセスできます) - ただし、「テスト」リソースは使用できないままです。考えられるすべての URL を試しましたが、404 しか返されませんでした。ApplicationConfig が読み込まれることさえないようです。

興味深い点:この質問の提案に従って、 no で小さな web.xml を追加し、@ApplicationPath を削除しようとしました。その結果、NullPointerException が発生します。これは、Servlet 2.x 環境で予想される動作とまったく同じです (クラスが指定されていないため、ClassLoader がクラッシュします)。

私はここで途方に暮れています。私が間違っていることについて何か提案はありますか?

PS: 私は NetBeans 7.3.1 を使用しています。プロジェクトは [Java Web -> Web アプリケーション -> Java EE 6 Web] で、余分なライブラリやコンテキスト/依存関係の注入はありません。

4

1 に答える 1