2016-12-01 2 views
4

私はMaven 3.3をJBoss 7.1.3.Final(Java 6)とともに使用しています。すべての受信リクエストデータがUTF-8としてエンコードされるように、Webアプリケーションにフィルタを含める必要があります。だから私は...私のweb.xmlファイルにMavenプロジェクトに「org.apache.catalina.filters.SetCharacterEncodingFilter」フィルタを適切に含めるにはどうすればよいですか?

  <dependency> 
       <groupId>org.apache.tomcat</groupId> 
       <artifactId>tomcat-catalina</artifactId> 
       <version>7.0.0</version> 
      </dependency> 

が、私のアプリケーションをデプロイする際には

<filter> 
    <filter-name>CharsetFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>requestEncoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
     <filter-name>CharsetFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
</filter-mapping> 

このMavenの依存関係を、これを追加、私は以下のエラーを取得...

WFLYCTL0186: Services which failed to start:  service jboss.undertow.deployment.default-server.default-host./myproject.UndertowDeploymentInfoService: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./myproject.UndertowDeploymentInfoService: java.lang.ClassNotFoundException: org.apache.catalina.filters.SetCharacterEncodingFilter from [Module "deployment.myproject.war:main" from Service Module Loader] 

何の依存性アプリケーションを正常に展開するためにインクルードする必要がありますか?

+0

JBoss 7.1.3を使用していると主張していますが、エラーメッセージはWildFly 8.xまで表示されていないundertowモジュールからのものです。 @BalusC:JBossASのすべてのバージョン(WildFlyベースのJBoss EAPを除く)はTomcatをWebコンテナの基礎として使用していたと思います。彼らはWildFlyに名前を変更したときに、 –

答えて

4

この質問は最初の意味がありません。

  1. That filter is part of Tomcat server、JBossサーバーではありません。
  2. Mavenの依存関係は基本的にWebアプリケーションにTomcatのエンジンをインストールします。これは、実際にJBoss ASを使用している場合に備えて、サーバー自身のTomcatエンジンと競合するだけです。
  3. あなたはJBoss ASを使用していると言いましたが、そのエラーメッセージはJBoss WildFlyに固有のものです。

私はあなたが本当にJBoss WildFlyをターゲットにしていると仮定します。したがって、Apache TomcatもJBoss ASも対象ではありません。あなたが実際にしている場合には

<servlet-container name="default" default-encoding="UTF-8"> 

default-encoding属性を追加する

<servlet-container name="default"> 

:JBossのWildFlyでUTF-8を使用可能にするための正しい方法は、以下の行を変更するには、その/standalone/configuration/standalone.xmlを編集することですJBoss AS 7.xでUTF-8を有効にする正しい方法(したがって6.x以下ではない)は、その/standalone/configuration/standalone.xmlを編集して追加することです<extensions><management>エントリの間の次のエントリ:

<system-properties> 
    <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8" /> 
</system-properties> 

は、ケースであなたは、ちょうどそれを自分でフィルタの作成、サーバ設定を操作および/または異なるサーバ間で移植可能な限り多くのWebアプリケーションを維持したいために許可されていません。以下は必須の行です:

@WebFilter("/*") 
public class CharacterEncodingFilter implements Filter { 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { 
     request.setCharacterEncoding("UTF-8"); 
     chain.doFilter(request, response); 
    } 

    // ... 
} 

webapp(JARではなく)の任意の場所にそのクラスをドロップすると、自動的にそのジョブが実行されます。

関連する問題