2011-12-20 1 views
1

以下のコードでは、XMLを検証しようとしています。私は日食からそれを実行するとすべてが動作します。 weblogic上に展開すると、コードがエラーで失敗します。「processingsrc-resolve中にSAX例外:名前XX:sometagを型定義 'コンポーネントに解決できません。」XSD SchemaFactoryエラー - Java 6

SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
System.out.println("schemaFactory -> " + schemaFactory.getClass()); 
Schema schema = schemaFactory.newSchema(resourceHandler.getXSDStreams()); 
StreamSource xmlContent = new StreamSource(new StringReader(requestXML)); 
Validator validator = schema.newValidator(); 
validator.validate(xmlContent); 

これは、スキーマの工場のためのEclipse上で生成される出力です: するSchemaFactory - >クラスcom.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory

WebLogicで、同じコード同じJARファイルで上記のエラーが発生します。 schemaFactoryはまったく同じです。

コンフィグ - 2

私は

String schemaFactoryProperty = "javax.xml.validation.SchemaFactory:" + XMLConstants.W3C_XML_SCHEMA_NS_URI; 
System.setProperty(schemaFactoryProperty,"org.apache.xerces.jaxp.validation.XMLSchemaFactory"); 

まだスキーマの工場の出力は同じまま負荷Xercesのファイルにシステムプロパティを設定しようとしたし、クラスパスにXercesのを追加しました:「するSchemaFactory - >クラスをcom.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory」が、エラーに変更。この時間:

java.lang.IllegalArgumentException: Source parameter of type 'javax.xml.transform.stream.StreamSource' is not recognized this SchemaFactory. 
    at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:203) 
    at com.bt.asi.task.AffectedServiceTask.execute(AffectedServiceTask.java:47) 
    at com.bt.asi.service.ASIJMSService.onMessage(ASIJMSService.java:30) 
    at... 

は、私は、Java 6とWLS 10.3.0にしています(Java 6)とSpringフレームワークを使用しています。

答えて

1

稼働しています(4時間後!!!)。

なぜローカルで動作するのですか?XSD内のインポートがうまく動作するように、スキーマがフォルダからロードされました。

サーバーiでは、実際のパスがURIであったため、sourceLocation = "SomeFile.xsd"というファイルは使用されませんでした。

私はスキーマをロードする順序を変更しました。私は次のインポートがなかったので可能だったので、最初にロードするファイルの順序を明確にしました)

2)すべてのXSDを1つのファイルにまとめました。

3)または、私はweb-inf /にXSDを保存しておき、JARファイルの代わりにそれらを探し出すことができました。次に、import sourceLocation = ""はそのファイルを検出しました。

これは誰かを助けることを望みます。

乾杯。 Vivek