【问题标题】:Simple Glassfish RESTful service in eclipse throws exceptioneclipse 中的简单 Glassfish RESTful 服务引发异常
【发布时间】:2013-06-30 11:43:54
【问题描述】:

这应该很容易,但它花费了我大量的时间。我基本上无法在 Eclipse 下运行 RESTful Web 服务。我确定我错过了一些愚蠢的东西,但是资源似乎有点分散,并且没有任何内容涵盖最近的 4.0/EE 7 版本。

我有一个全新安装的 Eclipse Kepler (4.3)。我尝试使用以下步骤设置一个基本的 RESTful 应用程序。

我安装了 Java EE 7

我打开 Eclipse,将其指向一个新的工作区并创建一个新的“动态 Web 应用程序”。

项目名称并不特别重要,通过下载 Glassfish 扩展(新运行时->下载其他服务器适配器->Glassfish)创建一个新的目标运行时。这需要重新启动 eclipse - 所以只需重复前面的操作,但在单击“新运行时”后选择 Glassfish 4.0 运行时。 Web Module 是 3.1,其他都是默认的。我点击“完成”来创建我的新项目。

然后我右键单击并打开项目属性,然后是“Project Facets”。我检查了 JAX-RS(REST Web 服务)。然后单击“需要进一步配置...”。然后从下拉列表中选择“禁用库配置”。字段接收以下值:

JAX-RS Servlet 名称:JAX-RS Servlet

JAX-RS servlet 类名:org.glassfish.jersey.servlet.ServletContainer

网址映射模式:/jaxrs/*

然后单击“确定”关闭所有窗口。

现在添加一个 New->'RESTful Web Service from Pattern' 会创建一个新类,glassfish 在部署时似乎不会使用它。我的理解是它应该自动扫描并使用@path 拾取东西。似乎没有。如果我解决的问题足够多,我似乎可以访问 application.wadl - 但没有显示我的资源。

如果我返回属性并查看我的 JAX-RS 项目方面,我会看到一个错误框,提示我的某些值无效。

在工作区日志中,我遇到了以下异常:

!ENTRY org.eclipse.jst.jee 4 0 2013-07-02 21:54:27.780 !MESSAGE org.eclipse.jst.javaee.web.internal.impl.WebAppImpl 无法转换为 org.eclipse.jst.j2ee.webapplication.WebApp !堆栈 0 java.lang.ClassCastException: org.eclipse.jst.javaee.web.internal.impl.WebAppImpl 不能转换为 org.eclipse.jst.j2ee.webapplication.WebApp 在 org.eclipse.jst.ws.jaxrs.core.internal.project.facet.UpdateWebXMLForJ2EE.run(UpdateWebXMLForJ2EE.java:32) 在 org.eclipse.jst.jee.model.internal.JEE5ModelProvider.modify(JEE5ModelProvider.java:255) 在 org.eclipse.jst.jee.model.internal.Web25MergedModelProvider.modify(Web25MergedModelProvider.java:92) 在 org.eclipse.jst.ws.jaxrs.core.internal.project.facet.JAXRSFacetInstallDelegate.createServletAndModifyWebXML(JAXRSFacetInstallDelegate.java:275) 在 org.eclipse.jst.ws.jaxrs.core.internal.project.facet.JAXRSFacetInstallDelegate.execute(JAXRSFacetInstallDelegate.java:156) 在 org.eclipse.wst.common.project.facet.core.internal.FacetedProject.callDelegate(FacetedProject.java:1477) 在 org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modifyInternal(FacetedProject.java:441) 在 org.eclipse.wst.common.project.facet.core.internal.FacetedProject.mergeChangesInternal(FacetedProject.java:1181) 在 org.eclipse.wst.common.project.facet.core.internal.FacetedProject.access$2(FacetedProject.java:1117) 在 org.eclipse.wst.common.project.facet.core.internal.FacetedProject$5.run(FacetedProject.java:1099) 在 org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) 在 org.eclipse.wst.common.project.facet.core.internal.FacetedProject.mergeChanges(FacetedProject.java:1109) 在 org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.commitChanges(FacetedProjectWorkingCopy.java:2020) 在 org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage$4.run(FacetsPropertyPage.java:232) 在 org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) 在 org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage$5.run(FacetsPropertyPage.java:246) 在 org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

任何见解将不胜感激。

【问题讨论】:

    标签: java eclipse rest glassfish


    【解决方案1】:

    尝试使用 Java SE 运行 Eclipse。您的项目需要编译的 Java EE 部分可以来自 Glassfish 本身。您可能还需要使用@Path 而不是@path,因为它匹配类型名称并且区分大小写。

    【讨论】:

    • 我一开始是单独下载 glassfish 4.0 和 Java SE 1.7。不过,我会再大写一次。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多