-
Notifications
You must be signed in to change notification settings - Fork 56
WebLogic_ja
terasoluan-gfw | OS | Java | WebLogic | RDBMS | Browser | Mail Server | Message Queue |
---|---|---|---|---|---|---|---|
5.7.1.RELEASE |
Red Hat Enterprise Linux 8.4 |
Oracle JDK 11.0.13 |
WebLogic 14.1.1.0 (※1) |
Oracle 19.3.0.0.0 |
Firefox ESR 91 (91.3.0esr) |
Postfix 3.6.3 + Dovecot 2.3.16 |
ActiveMQ 5.16.3 |
-
※1 : ページがバッファサイズを超えてflushされた後にヘッダを取得するとNullPointerExceptionが発生する不具合を回避するため、「My Oracle Support」で提供されているパッチ32133880を適用。
WebLogicには、WebLogicのlib
ディレクトリにクラスが格納されており、Webアプリケーションのクラスと競合して例外がスローされる場合がある。
Web アプリケーションのWEB-INF
ディレクトリ内のクラスを、WebLogicのlib
ディレクトリ内のクラスより優先してロードするためには、以下のいずれかの設定を行なう。
prefer-application-packages
で指定したパッケージは、常にWebアプリケーションのWEB-INF
ディレクトリ内からロードされる。
この設定を行うことで5.5.1以降および5.4.2のアプリケーションが正常に動作することを確認している。
<container-descriptor>
<prefer-application-packages>
<package-name>org.hibernate.validator.*</package-name><!-- (1) -->
<package-name>javax.validation.*</package-name><!-- (2) -->
<package-name>com.fasterxml.jackson.*</package-name><!-- (3) -->
<package-name>org.joda.*</package-name><!-- (4) -->
<package-name>org.slf4j.*</package-name><!-- (5) -->
<package-name>org.apache.xmlbeans.*</package-name><!-- (6) -->
<package-name>com.nimbusds.*</package-name><!-- (7) -->
</prefer-application-packages>
</container-descriptor>
項番 | 説明 |
---|---|
(1) |
Hibernate Validatorが正常に動作しないため、当該パッケージの優先度を変更する。 |
(2) |
Bean Validationのバージョンが競合しエラーが発生する場合があるため、当該パッケージの優先度を変更する。 |
(3) |
Jacksonが正常に動作しないため、当該パッケージの優先度を変更する。 |
(4) |
Joda Timeが正常に動作しないため、当該パッケージの優先度を変更する。 |
(5) |
アプリケーションログが正常に出力されないため、SLF4Jのパッケージの優先度を変更する。 |
(6) |
Apache POIを利用する場合、XMLBeansのバージョンが競合しエラーが発生する場合があるため、当該パッケージの優先度を変更する。(5.5.x以前では変更しなくてもエラーは発生しない) |
(7) |
Spring SecurityのOAuth2で実装したリソースサーバーでJWT認証を行う場合(5.7.1.RELEASE以降の OAuth2の記述 に従う場合)、Nimbus JOSE+JWTのバージョンが競合しエラーが発生する場合があるため、当該パッケージの優先度を変更する。 |
prefer-web-inf-classes
にtrue
を指定すると、Web アプリケーションのWEB-INF
ディレクトリ内のクラスがWebLogicのlib
ディレクトリ内のクラスより優先してロードされる。
この設定を行うことで5.4.2のアプリケーションが正常に動作することを確認している。
5.5.1以降のアプリケーションでは、Bean Validation 2.0の読み込みに失敗しアプリケーションが起動できないことが確認されている。
projectName-web/src/main/webapp/WEB-INF/weblogic.xml
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
Note
|
JAVA_OPTIONS="${JAVA_OPTIONS}"
export JAVA_OPTIONS
JAVA_OPTIONS="${JAVA_OPTIONS} -DANTLR_USE_DIRECT_CLASS_LOADING=true"
export JAVA_OPTIONS |
URL 書き換えを無効にする。これによって、セッション ID が URL にエンコーディングされ、クッキーがブラウザで無効の場合にセッション トラッキングが実行さないようにする。
デフォルトはtrue
である。(jsessionId
をブラウザのURLに出力しないため。)
projectName-web/src/main/webapp/WEB-INF/weblogic.xml
<session-descriptor>
<url-rewriting-enabled>false</url-rewriting-enabled>
</session-descriptor>
WebLogicはデフォルトの状態では、リクエストにAuthorizationヘッダが付いていると、WebLogicのBASIC認証機能が作動してしまう。そのため、Webアプリケーション側でBASIC認証を設定する必要がある場合は、WLSTコンソールからWebLogicのセキュリティ設定を変更してBASIC認証をオフに設定する必要がある。
WLSTコンソールの起動
$ source <WL_HOME>/server/bin/setWLSEnv.sh
$ java weblogic.WLST
WLSTコマンドを実行して、BASIC認証をオフに設定
wls:/offline> connect('<ユーザー名>', '<パスワード>', 't3://<管理ホスト>:<管理ポート>')
wls:/<ドメイン名>/serverConfig/> edit()
wls:/<ドメイン名>/edit/> startEdit()
wls:/<ドメイン名>/edit/ !> cd('/SecurityConfiguration/mydomain')
wls:/<ドメイン名>/edit/SecurityConfiguration/mydomain !> cmo.setEnforceValidBasicAuthCredentials(false)
wls:/<ドメイン名>/edit/SecurityConfiguration/mydomain !> save()
wls:/<ドメイン名>/edit/SecurityConfiguration/mydomain !> validate()
wls:/<ドメイン名>/edit/SecurityConfiguration/mydomain !> showChanges()
wls:/<ドメイン名>/edit/SecurityConfiguration/mydomain !> activate()
wls:/<ドメイン名>/edit/SecurityConfiguration/mydomain> exit()
TERASOLUNA Server Frameworkでは、JRFを有効にしていない状態のWebLogicで検証している。(Oracle Fusion Middleware InfrastructureやOracle JdeveloperをインストールしないでOracle WebLogic Serverのみをインストールする。)
Note
|
JRFライブラリをロードすると、Webアプリケーションのデプロイ時に |
WebLogicでSOAPクライアントのタイムアウトを設定するにはJaxWsPortProxyFactoryBean
のカスタムプロパティに対してvalue-type
性でInteger
型を指定する必要がある。プロパティにvalue-type
属性を指定しなかった場合、WebLogicのJAX-WS実装ライブラリがString
型からInteger
型へのキャストを試みて失敗し、org.springframework.remoting.RemoteAccessException
が発生する。
実装方法については開発ガイドラインの タイムアウトの設定 を参照されたい。
5.5.1から5.6.0への移行ガイド のSTEP「log4jdbc-remixのサポートを終了したことに伴う修正」にてJPA(Hibernate)のログ出力設定について解説しているが、WebLogicではJPAプロバイダとしてWebLogicに含まれるJPA実装が利用されるため、アプリケーションのlogback.xml
で設定してもログが出力されないことが確認されている。
「Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの管理」の 20 WebLogic JDBCリソースのモニタリング 等を参考に、WebLogicの機能を利用してSQLをログ出力することを検討されたい。なお、アプリケーションでSQLをログ出力したい場合は以下の方法が考えられるが、いずれも各開発プロジェクトでテストを実施し、品質を確保されたい。
-
5.6.0からサポート対象外となったlog4jdbc-remixを利用する
利用するJDBCのバージョンやJPAプロバイダの実装により実行時エラーが発生する可能性があることに留意されたい。 -
log4jdbc-remixのようにデータソースBeanをプロキシするような実装を行う
実装方法の解説は省略する。