【发布时间】: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