3

このリンク、Creating a Simple HelloWorld Web Serviceで示されているように、Weblogic サーバーに JAX-WS サービスをデプロイしようとしています。これをデプロイしたところ、完全に正常に動作することがわかりました。

また、このサービスが呼び出されるたびに、ログ ファイルにデータを書き込みたいと考えています。このために、log4j を使用しています。これは、リンク内のコードを変更しようとした方法です。

package examples.webservices.hello_world;

import javax.jws.WebService;
import org.apache.log4j.Logger; 

@WebService(name="HelloWorldPortType", serviceName="HelloWorldService")
public class HelloWorldImpl {

    public static Logger log = Logger.getLogger(HelloWorldImpl.class);

    public String sayHelloWorld(String message) {
    try {
        log.info("Start");
        System.out.println("sayHelloWorld:" + message);
    } catch (Exception ex) { ex.printStackTrace(); }
        return "Here is the message: '" + message + "'";
    }
}

log4j-1.2.8.jarファイルのパスをCLASSPATH変数に設定しました。しかし、Web サービスをビルドしようとすると、java.lang.ClassNotFoundException: org.apache.log4j.Logger.

build.xmlリンクにあるものと同じファイルを使用しています。ファイルに変更が必要build.xmlですか? log4j.properties ファイルはどこに配置すればよいですか? どんな助けでも大歓迎です。

4

1 に答える 1

1

クラスパスが設定されている場合でも、weblogic が実行時に log4j を見つけることができないため、この問題が発生する必要があります。より具体的には、戦争のクラスローダーはlog4jを見つけることができません。

トラブルシューティングの方法は次のとおりです。

  1. log4jWAR に実際にバンドルされている場合は、build.xml を確認してください。
  2. autodeploy ディレクトリに移動し、war ファイルを別の場所にコピーして圧縮し、WEB-INF/liblog4j が実際に存在するかどうかを確認します。
  3. クラスパスに複数の log4j バージョンがあるかどうかを確認してください。

最後に、再利用可能な jar のセットを weblogic にデプロイするための推奨される方法は、共有ライブラリを使用し、 を通じて参照することweblogic.xmlです。

次のことに役立ちます。

  • 異なる war での jar ファイルの繰り返しのバンドルを回避します。
  • すべての展開がライブラリの優先バージョンに合理化されていることを確認します。
于 2013-06-08T10:16:39.300 に答える