2

WSO2 WSAS アプリケーション サーバー内の Axis2 上にある私の Web サービスには、次のコードが含まれています。

String prop = "javax.xml.transform.TransformerFactory";
String val = "net.sf.saxon.TransformerFactoryImpl";

public static TransformerFactory getTransformerFactory() {
    System.setProperty(prop, val); // This line executes normally
    return TransformerFactory.newInstance(); // Error occurs inside this call
}

サービスを実行すると、次のエラーが発生します。

[2013-04-15 12:22:41,263] ERROR
  {org.apache.axis2.transport.base.threads.NativeWorkerPool} -  Uncaught
  exception
javax.xml.transform.TransformerFactoryConfigurationError: Provider
  net.sf.saxon.TransformerFactoryImpl not found
        at javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
        at com.example.Setup.getTransformerFactory(Setup.java:40)
        at com.example.ProcessFiles.init(ProcessFiles.java:336)
        at com.example.TorgApp.incoming(TorgApp.java:229)
        ...

Saxon-HE-9.4.jarクラスパスにあり、読み取り可能です。Axis2 ( ) でも使用できます/foo/bar/wso2as/wso2as-4.0.0/tmp/axis2-tmp-6436419317930731973.tmp/axis67573163200472779114Saxon-HE-9.4.jar

の Javadoc にnewInstance()よると、私が設定しているシステム プロパティは、どれを使用するかを識別する他のすべての方法を無効にする必要があるTransformerFactoryため、優先順位は問題ではありません。

このエラーの原因は何ですか? また、目的の Saxon 変圧器工場を取得するにはどうすればよいですか?

4

2 に答える 2

2

axis2 (例外の原因と思われる) が Web アプリケーションの外部に配置されている場合は、そこでも Saxon を使用できるようにする必要があります。

ほとんどのアプリケーション サーバーには、まさにこの目的のために jar ファイルを配置できる定義済みの場所があります。Web アプリケーションにデプロイするだけでは十分ではありません。

于 2013-04-17T20:34:11.247 に答える
0

これはクラスの読み込みの問題のようです。このドキュメントに従っていますか。 http://docs.wso2.org/wiki/display/AS510/Webapp+ClassLoading

于 2013-04-17T20:26:57.790 に答える