栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在GlassFish Server中找不到JAX-RS资源

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在GlassFish Server中找不到JAX-RS资源

您可能会缺少JAX-
RS应用程序servlet。您可以在中定义它,

web.xml
或者如果您希望不使用xml,可以使用
Application
子类。IMO最简单的方法就是使用
Application
带有注释的子类
@ApplicationPath
。将创建一个servlet,并在注释中设置servlet路径的值。就像是

@ApplicationPath("/rest")public class RestApplication extends Application {    // All request scoped resources and providers    @Override    public Set<Class<?>> getClasses() {        Set<Class<?>> classes = new HashSet<>();        classes.add(DukesAgeResource.class);        return classes;    }    // all singleton resources and providers    @Override    public Set<Object> getSingletons() {        Set<Object> singletons = new HashSet<>();        return singletons;    }}

然后资源应该通过

http://localhost:8080/DukesAgeService/rest/dukesAge

还有其他方法,但这是可移植的方法。Glassfish使用Jersey,但是在Netbeans中从头开始创建Java EE
Web应用程序将仅导入编译时Java EE标准类(没有Jersey依赖项)。因此,以上内容确实是您的最佳选择。

您可以在Jersey文档中查看其他部署选项。对于某些选项,您可能需要添加一些Jersey编译时依赖性。这就是我刚才提到的原因。无需其他罐子。

导致404错误的另一件事是,如果您将JAX-RS
servlet路径指定为

/*
。这将与提供静态资源(例如html页面)的默认servlet冲突。这就是为什么我将其设置为
/rest


更新

JAX-
RS规范中还指出,如果

getClasses()
and中返回了空集,则
getSingletons()
应该进行隐式包扫描。(提供者)
@Provider
默认情况下,带有注释的类将作为单例添加,带有注释的资源类
@Path
将是按请求的对象(这意味着将在每个请求中创建一个新对象)。所以您可以选择拥有

@ApplicationPath("/rest")public class RestApplication extends Application {    // Left empty}

它应该工作相同。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509633.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号