私は、単一のWARファイルにMavenのベースのバックエンドのJavaプロジェクトで角度7セットアップしようとしています。現時点で私が設定しようとしているweb.xml
私は、現在この問題を抱えていたファイルを。私のアプローチは、したがって、私は最初の(あなたがこの点に優れて思えば、正しい私をしてください)私がやろうとしていますかを説明します有効または「良好」である場合、私は全くわかりません。
私はいくつ持っているので、JAX-RS
私はとして機能したいクラスをREST API
。この目的のために私が対応して作成しているjavax.ws.rs.core.Application
これらのRESTコンポーネントを提供するクラスを。それから私は含めていますApplication
のクラスweb.xml
ファイル。下記のファイルは、以下のとおりです。
web.xmlの
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>backend.backendservice.StammSolvaraJahrRestApplication</servlet-name>
<servlet-class>backend.backendservice.StammSolvaraJahrRestApplication</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>backend.backendservice.StammSolvaraJahrRestApplication</servlet-name>
<url-pattern>/rmz/*</url-pattern>
</servlet-mapping>
別のバリエーションweb.xml
私が試したこと
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>backend.backendservice.StammSolvaraJahrRestApplication</servlet-name>
<servlet-class>backend.backendservice.StammSolvaraJahrRestApplication</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>backend.backendservice.StammSolvaraJahrRestApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>backend.backendservice.StammSolvaraJahrRestApplication</servlet-name>
<url-pattern>/rmz/*</url-pattern>
</servlet-mapping>
Applicationクラス
public class StammSolvaraJahrRestApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> sets = new HashSet<>();
sets.add(StammSolvaraJahrRest.class);
return sets;
}
}
私が得ることをエラーは次のようになります。java.lang.ClassCastException: backend.backendservice.StammSolvaraJahrRestApplication cannot be cast to javax.servlet.Servlet
そして、私は削除した場合<servlet-class>
、私は得るでしょうNo servlet class has been specified for servlet
。私は、次の午前https://docs.oracle.com/cd/E24329_01/web.1211/e24983/configure.htm#RESTF183とをどのようにJAX-RSアプリケーションをデプロイするには?特にそれが動作していないようです。
あなたのJAX-RSサーブレットを定義する2つの方法があります。
1)あなたが持っているようなアプリケーションのサブクラスでは、web.xmlの設定をスキップし、単にアプリケーションの注釈を追加することができます
@ApplicationPath("resources")
public class StammSolvaraJahrRestApplication extends Application
2)でweb.xmlの設定
<servlet>
<display-name>JAX-RS Servlet</display-name>
<servlet-name>package.hierarchy.StammSolvaraJahrRestApplication</servlet-name>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>package.hierarchy.StammSolvaraJahrRestApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>JaxRSServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
あなたが最後の1からサーブレットマッピングをスキップした場合、それはあなたのあなたの使用する@ApplicationPath
指定した値を、または"/resources"
以前の一つが欠落している場合。