0

これは簡単なはずですが、膨大な時間がかかりました。基本的に、Eclipse で RESTful Web サービスを実行することはできません。何かばかげたことを見逃していると思いますが、リソースが少し散らばっているようで、最近の 4.0/EE 7 リリースをカバーするものは何もありません。

Eclipse Kepler (4.3) をクリーン インストールしています。次の手順を使用して、基本的な RESTful アプリをセットアップしようとしました。

Java EE 7 をインストールしました

Eclipse を開き、新しいワークスペースを指定して、新しい「動的 Web アプリケーション」を作成します。

プロジェクト名は特に問題ではありません。新しいターゲット ランタイムは、Glassfish 拡張機能をダウンロードすることによって作成されます (新しいランタイム -> 追加のサーバー アダプターのダウンロード -> Glassfish)。これには eclipse の再起動が必要です。そのため、前の手順を繰り返しますが、[新しいランタイム] をクリックした後、Glassfish 4.0 ランタイムを選択します。Web モジュールは 3.1 で、それ以外はすべてデフォルトです。[完了] をクリックして新しいプロジェクトを作成します。

次に、右クリックしてプロジェクトのプロパティを開き、[Project Facets] を開きます。JAX-RS(REST Web Services)のチェックをしています。次に、[追加の構成が必要です...] をクリックします。次に、ドロップダウンから [ライブラリ構成を無効にする] を選択します。フィールドには次の値が表示されます。

JAX-RS サーブレット名: JAX-RS サーブレット

JAX-RS サーブレット クラス名: org.glassfish.jersey.servlet.ServletContainer

URL マッピング パターン: /jaxrs/*

次に、[OK] をクリックしてすべてのウィンドウを閉じます。

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 !STACK 0 java.lang.ClassCastException: org.eclipse.jst.javaee.web.internal.impl.WebAppImpl は org.eclipse.jst.ws で org.eclipse.jst.j2ee.webapplication.WebApp にキャストできません.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) at org. eclipse.wst.common.project.facet.core.internal.FacetedProject.modifyInternal(FacetedProject.java:441) at 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) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.commitChanges(FacetedProjectWorkingCopy.java:2020) の org.eclipse.wst.common.project.facet.ui の mergeChanges(FacetedProject.java:1109)。 internal.FacetsPropertyPage$4.run(FacetsPropertyPage.java:232) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) at 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)run(FacetsPropertyPage.java:232) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage$5.run (FacetsPropertyPage.java:246) org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) でrun(FacetsPropertyPage.java:232) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage$5.run (FacetsPropertyPage.java:246) org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) で

どんな洞察も非常に高く評価されます。

4

1 に答える 1

0

Java SE で Eclipse を実行してみてください。プロジェクトがコンパイルする必要がある Java EE の部分は、Glassfish 自体から取得できます。@path は型名に一致し、大文字と小文字が区別されるため、@path ではなく @Path を使用する必要がある場合もあります。

于 2013-07-02T22:50:03.957 に答える