Eclipse中的简单Glassfish RESTful服务抛出异常

时间:2013-07-02 22:33:18

标签: java eclipse rest glassfish

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

我已经完全安装了Eclipse Kepler(4.3)。我尝试使用以下步骤设置基本的RESTful应用程序。

我安装了Java EE 7

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

项目名称并不特别重要,通过下载Glassfish扩展(New Runtime->下载其他服务器适配器 - > Glassfish)创建新的Target Runtime。这需要重新启动eclipse - 所以只需重复上一次,但在点击“New Runtime”后选择Glassfish 4.0运行时。 Web模块是3.1,其他一切都是默认的。我点击“完成”以创建我的新项目。

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

  

JAX-RS servlet名称:JAX-RS Servlet

     

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

     

网址映射模式:/ jaxrs / *

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

现在添加一个新的>'来自Pattern的RESTful Web服务'创建了一个新类,在部署时似乎没有被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)           at org.eclipse.jface.operation.ModalContext $ ModalContextThread.run(ModalContext.java:121)

任何见解都会非常感激。

1 个答案:

答案 0 :(得分:0)

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