В приведенном ниже коде я пытаюсь проверить XML. Все работает, когда я запускаю его из eclipse. Когда я развертываю его в weblogic, код выходит из строя с ошибкой: «Исключение SAX при обработке rc-resolve: невозможно преобразовать имя XX: sometag в компонент «определение типа» (n)».
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 -> class com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory
В Weblogic тот же код с теми же файлами JAR дает указанную выше ошибку. schemaFactory точно такой же.
Конфигурация - 2
Я попытался установить свойство System для загрузки файлов xerces и добавил xerces в путь к классам.
String schemaFactoryProperty = "javax.xml.validation.SchemaFactory:" + XMLConstants.W3C_XML_SCHEMA_NS_URI;
System.setProperty(schemaFactoryProperty,"org.apache.xerces.jaxp.validation.XMLSchemaFactory");
Тем не менее вывод для фабрики схем остается прежним: «schemaFactory -> class 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.