2

Jersey 2を使用してREST APIを実装したいと思います.リソースをインターフェースとその実装に分けたいと思います.

@Path("hello")
public interface HelloLogic {
    @GET
    @Produces("application/json")
    public String hello();
}

public class HelloLogicResource implements HelloLogic {
    public String hello() {
        return "{\"reply\": \"Hello\"}";
    }
}

ただし、リソースを公開することはできません。先ほど言及した hello リソースについては、次のもので十分であることを期待していました。

public class MyApplication extends ResourceConfig {
    public MyApplication() {
        register(new MyApplicationBinder());
    }
}

public class MyApplicationBinder extends AbstractBinder {
    @Override
    protected void configure() {
        bind(HelloLogic.class).to(HelloLogicResource.class);
    }
}

web.xml:

<servlet>
    <servlet-name>MyApplication</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>stines.api.MyApplication</param-value> 
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>MyApplication</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

pom.xml:

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.4.1</version>
</dependency>

でも打つ時は

http://localhost:8080/hello

404 応答が返されます。

ご意見をお待ちしております:) ありがとうございます。


新しい発見:これで動作します:

public class MyApplication extends ResourceConfig {
    public MyApplication() {
        registerClasses(HelloLogicResource.class);
    }
}
4

2 に答える 2

1

これは機能します:

public class MyApplication extends ResourceConfig {
    public MyApplication() {
        registerClasses(HelloLogicResource.class);
    }
}
于 2013-12-14T16:08:22.820 に答える