404在Glassfish上调用Jersey 2 REST端点时

时间:2015-10-16 15:13:38

标签: java glassfish jersey

这是我的web.xml

<servlet>
        <servlet-name>Simulator HTTP API</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Simulator HTTP API</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

这是我简单的网络服务:

@Path("partner")
public class PartnerAPI {

    @Path("/mt")
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sendMT() {
        return "Sent";
    }

}

当我这样称呼它时:

http://localhost:8080/myprojectname/partner/mt

我发现404错误,我做错了什么?

更新

这是我的专家

<dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>2.22.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-common</artifactId>
            <version>2.22.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>2.22.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.22.1</version>
        </dependency>

1 个答案:

答案 0 :(得分:4)

您在Jersey 2中有不同的部署选项:

如果您想通过web.xml进行操作,则必须添加init-param,指定应扫描哪些包:

<servlet>
        <servlet-name>Simulator HTTP API</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>insert.packagename.where.your.class.is.here</param-value>
        </init-param>
</servlet>

另一个选择是创建一个基本类来配置REST应用程序。

这看起来像这样:

import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;

    @ApplicationPath("/test")
    public class YourApplication extends ResourceConfig {
        public YourApplication() {
            this.packages("insert.packagename.where.your.class.is.here");
        }
    }

确保使用您的PartnerAPI类所在的包名更新字符串。

然后将@ApplicationPath内的值添加到您的网址中。
链接如下所示:http://localhost:8080/myprojectname/test/partner/mt

更多信息:Jersey docs: Chapter 4. Deploying a RESTful Web Service