未找到Glassfish-4平针织REST应用程序资源

时间:2015-08-26 09:59:14

标签: java rest glassfish jersey

我正在使用Glassfish 4,我使用简单的REST Web服务创建了一个简单的Web应用程序。 一切都很好,直到我试图创建一个新的glassfish安装。当我完成新安装时,我部署了战争并且它成功部署,而没有任何错误在glassfish日志上。部署之后,当我从管理控制台提供的URL启动Web应用程序时:

http://localhost:8080/MyRESTWebApp_war/

我收到状态404未找到错误...

这是我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version="3.1">
     <servlet>
        <servlet-name>MyRESTWebApp</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>my.package.rest</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyRESTWebApp</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

我还配置了一个使用@Path注释扩展Application的类:

@ApplicationPath("/rest")
public class MyRESTWebAppApplication extends Application
{
    @Override
    public Set<Class<?>> getClasses()
    {
        return getResourceClasses();
    }

    private Set<Class<?>> getResourceClasses()
    {
        Set<Class<?>> resources = new HashSet<>();
        resources.add(Example.class);
        return resources;
    }
}

我不记得我在之前的glassfish安装上做了什么配置,这非常令人沮丧......

当我尝试测试示例helloworld Rest服务时,我也收到404错误:

http://localhost:8080/MyRESTWebApp_war/rest/helloworld

3 个答案:

答案 0 :(得分:0)

url http://localhost:8080/MyRESTWebApp_war/rest/rest/怎么样?
你的其他api url从/ rest / *开始,你的资源类url也从/ rest开始。

答案 1 :(得分:0)

您只能使用http://localhost:8080/rest/访问它吗? 你的Example.class看起来像什么?

<强>更新

您无法访问此网址的原因很简单我认为,您的服务已在http://localhost:8080/MyRESTWebApp_war/rest/上得到很好的部署,而您在此处获得404回复的事实是因为您没有在该路径上实现了GET方法。尝试创建如下资源:

@Path("/")
class RootResource {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello(){
        return "Hello"
    }
}

答案 2 :(得分:0)

在一些玻璃鱼重新启动后,我的休息服务正在按预期工作。

我访问时仍然收到404错误:

http://localhost:8080/MyRESTWebApp_war/

但是当我点击完整的RESTful服务链接时:

http://localhost:8080/MyRESTWebApp_war/rest/helloworld

我得到了预期的回应......

我仍然没有弄清楚我做错了什么,这几乎花了我一整天才弄明白......谢谢大家的时间和建议!