-
Notifications
You must be signed in to change notification settings - Fork 55
JBoss6_ja
bttamuratsh edited this page Feb 23, 2017
·
19 revisions
terasoluan-gfw | OS | Java | JBoss | RDBMS | Browser | Mail Server | Message Queue |
---|---|---|---|---|---|---|---|
5.3.0.RELEASE | CentOS 7.2 | OpenJDK 8u111 | JBoss EAP 6.4.0.CVE-2015-7501 | PostgreSQL 9.6.1 | Firefox ESR 38 (38.5.0) | Postfix 2.10.1 + Dovecot 2.1.10 | ActiveMQ 5.13.4 |
JBoss EAP(JBoss Enterprise Application Platform)環境においてTERASOLUNA Server Framework for Java (5.x)を使用する場合、 以下の設定が必要となる。
-
jboss-deployment-structure.xml
の作成と設定 - URIエンコーディングの設定
- ファイルアップロード(Commons FileUpload)の設定
JBossのサーバモジュールとTERASOLUNA Server Framework for Java (5.x)で使用しているライブラリが競合した場合、JBoss側のモジュールが優先されるため、正常に動作しないことがある。
そのため、
jboss-deployment-structure.xml
を作成し、JBoss側のモジュールを除外(一部、参照)する設定が必要となる。jboss-deployment-structure.xml
は、WEB-INF直下に配置する。WEB-INF/jboss-deployment-structure.xml
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="javaee.api" /><!-- (1) -->
<module name="javax.faces.api" /><!-- (2) -->
<module name="org.jboss.logging" /><!-- (3) -->
<module name="org.slf4j" /><!-- (4) -->
<module name="org.hibernate.validator" /><!-- (5) -->
<module name="javax.inject.api" /> <!-- (6) -->
</exclusions>
<dependencies>
<module name="org.apache.activemq" /><!-- (7) -->
<module name="javax.jms.api" /><!-- (7) -->
<module name="javax.annotation.api" /><!-- (8) -->
</dependencies>
<exclude-subsystems>
<subsystem name="jpa" /><!-- (9) -->
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
.. tabularcolumns:: |p{0.10\linewidth}|p{0.80\linewidth}|
項番 | 説明 |
---|---|
(1)
|
JBossのJava EEモジュールを除外する設定。Bean Validationライブラリ、JPAライブラリの競合を避けるために設定。
この設定を行わない場合、WARのデプロイ時にエラーが発生する。
|
(2)
|
JBossのJavaServer Facesモジュールを除外する設定。Bean Validationライブラリの競合を避けるため、(1)と合わせて設定する必要がある。
|
(3)
|
JBossのLoggingモジュールを除外する設定。この設定を行わない場合、WARのデプロイ時にエラーが発生する。
|
(4)
|
JBossのSLF4Jモジュールを除外する設定。この設定を行わない場合、アプリケーションログが正常に出力されない。
|
(5)
|
JBossのHibernate Validatorモジュールを除外する設定。この設定を行わない場合、Hibernate Validatorが正常に動作しない。
|
(6)
|
JBossのjavax.Inject.apiモジュールを除外する設定。現段階では除外しなくても問題は無いが、バージョンアップ時にエラーが起こる可能性を避けるために設定する。
|
(7)
|
JBossのjavax.jms.apiおよびorg.apache.activemqモジュールを参照する設定。この設定を行わない場合、Connection Factoryの定義に必要なクラスが存在しないため、ClassNotFoundExceptionが発生する。(JMSプロバイダとしてApache ActiveMQを使う場合は本設定が必要)
|
(8)
|
JBossのjavax.annotation.apiモジュールを参照する設定。この設定を行わない場合、
@Resource アノテーションによるインジェクションが動作しない。 |
(9)
|
JBossのJPAサブシステムが働かないように除外する設定。この設定を行わない場合、WARのデプロイ時にエラーが発生する。(O/R MapperとしてJPAを使う場合は本設定が必要)
|
JBoss環境において、リクエストパラメータにマルチバイト文字を含む場合、文字化けが発生する。
これを回避するためには、以下のURIエンコーディングの設定が必要となる。
- デフォルトの文字コードを
org.apache.catalina.connector.URI_ENCODING
を使用して設定する - さらにリクエストごとに文字コード設定している場合、
org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING
を使用してリクエストに文字コードを適用する
設定方法は、以下を参照されたい。
org.apache.catalina.connector.URI_ENCODING
を使用し、URIのデフォルトの文字コードを設定する。
- 設定例
{JBOSS_HOME}/standalone/configuration/standalone.xml
<extensions>
タグの次に以下の設定を追加する
<!--omitted-->
</extensions>
<system-properties>
<property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
</system-properties>
上記例では、"UTF-8"が適用される。
アプリケーションでServletRequest#setCharacterEncoding(String)
を使用してリクエストごとに文字コード設定を行っている場合、
org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING
を使用して、リクエストの文字コードをURIリクエストパラメータに適応させる。
- 設定例
request.setCharacterEncoding("Windows-31J");
{JBOSS_HOME}/standalone/configuration/standalone.xml
<extensions>
タグの次に以下の設定を追加する
<!--omitted-->
</extensions>
<system-properties>
<property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
<property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
</system-properties>
上記例では、"Windows-31J"が適用される。
リクエストに文字コードを設定しない場合は、
org.apache.catalina.connector.URI_ENCODING
で指定した"UTF-8"が適用される。JBoss上でServlet 3.0のファイルアップロード機能を使用すると、 リクエストパラメータやファイル名のマルチバイト文字が文字化けすることがある。
Commons FileUploadを使用することで、この問題を回避することができる。
使用方法は以下ガイドラインの説明を参照。