JAX-RPC e APACHE XERCES

1 resposta
G

Ola ;
Tenho uma aplicacao que consome WebService com JAX-RPC.

Preciso fazer uma COMPARACAO de XMLs onde uso APACHE XERCES 2.11

Quando incluo a Biblioteca do Xerces no meu ClassPath dá o seguinte erro :

Alguem pode me ajudar ? Obrigado

deps-jar:
Created dir: /media/HD_DADOS/GABRIEL/Meus documentos/NetBeansProjects/Cadastro/build
Updating property file: /media/HD_DADOS/GABRIEL/Meus documentos/NetBeansProjects/Cadastro/build/built-jar.properties
wscompile-init:
Created dir: /media/HD_DADOS/GABRIEL/Meus documentos/NetBeansProjects/Cadastro/build/classes
Created dir: /media/HD_DADOS/GABRIEL/Meus documentos/NetBeansProjects/Cadastro/build/generated-sources/jax-rpc
wsCEP.php-client-wscompile:
Copying 1 file to /media/HD_DADOS/GABRIEL/Meus documentos/NetBeansProjects/Cadastro/build/generated-sources/jax-rpc/wsdl
Exception in thread "main" java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        at org.apache.xerces.parsers.AbstractDOMParser.startDocument(Unknown Source)
        at org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(Unknown Source)
        at org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
        at com.sun.xml.rpc.wsdl.parser.WSDLParser.parseDefinitionsNoImport(WSDLParser.java:334)
        at com.sun.xml.rpc.wsdl.parser.WSDLParser.parseDefinitions(WSDLParser.java:225)
        at com.sun.xml.rpc.wsdl.parser.WSDLParser.parse(WSDLParser.java:214)
        at com.sun.xml.rpc.processor.modeler.wsdl.WSDLModelerBase.buildModel(WSDLModelerBase.java:200)
        at com.sun.xml.rpc.processor.config.ModelInfo.buildModel(ModelInfo.java:88)
        at com.sun.xml.rpc.processor.Processor.runModeler(Processor.java:63)
        at com.sun.xml.rpc.tools.wscompile.CompileTool.run(CompileTool.java:714)
        at com.sun.xml.rpc.util.ToolBase.run(ToolBase.java:43)
        at com.sun.xml.rpc.tools.wscompile.Main.main(Main.java:22)
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        ... 29 more
Command invoked: wscompile /usr/lib/jvm/java-6-openjdk/jre/bin/java -classpath "/usr/lib/jvm/java-6-openjdk/lib/tools.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/antlr-2.7.6.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/asm.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/asm-attrs.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/cglib-2.1.3.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/commons-collections-2.1.1.jar:/usr/share/netbeans/6.8/ide12/modules/ext/commons-logging-1.1.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/dom4j-1.6.1.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/ehcache-1.2.3.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/jdbc2_0-stdext.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/jta.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/hibernate3.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/hibernate-tools.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/hibernate-annotations.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/hibernate-commons-annotations.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/hibernate-entitymanager.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/javassist.jar:/home/gabriel/.netbeans/6.8/modules/ext/hibernate/ejb3-persistence.jar:/home/gabriel/jayBird216/jaybird-full-2.1.6.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/activation.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/FastInfoset.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/jaxp-api.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/jax-qname.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/jaxrpc-api.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/jaxrpc-impl.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/jaxrpc-spi.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/jsr173_api.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/mail.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/relaxngDatatype.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/saaj-api.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/saaj-impl.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxrpc16/xsdlib.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxb/activation.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxb/api/jaxb-api.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxb/jaxb-impl.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxb/jaxb1-impl.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxb/jaxb-xjc.jar:/home/gabriel/.netbeans/6.8/modules/ext/jaxb/api/jsr173_api.jar:/media/HD_DADOS/GABRIEL/Meus documentos/netbeans_plug-ins/xerces-2_11_0/xercesImpl.jar" com.sun.xml.rpc.tools.wscompile.Main -d "/media/HD_DADOS/GABRIEL/Meus documentos/NetBeansProjects/Cadastro/build/generated-sources/jax-rpc" -features:searchschema,wsi,rpcliteral -gen:client -httpproxy:${wscompile.client.wsCEP.php.proxy} -keep -mapping "/media/HD_DADOS/GABRIEL/Meus documentos/NetBeansProjects/Cadastro/build/generated-sources/jax-rpc/wsdl/wsCEP.php-mapping.xml" -s "/media/HD_DADOS/GABRIEL/Meus documentos/NetBeansProjects/Cadastro/build/generated-sources/jax-rpc" "/media/HD_DADOS/GABRIEL/Meus documentos/NetBeansProjects/Cadastro/build/generated-sources/jax-rpc/wsdl/wsCEP.php-config.xml"
/media/HD_DADOS/GABRIEL/Meus documentos/NetBeansProjects/Cadastro/nbproject/build-impl.xml:404: wscompile failed
FALHA NA CONSTRUÇÃO (tempo total: 1 segundo)

1 Resposta

G

NÃO HÁ maneira de JAX-RPC e APACHE XERCES conviverem no mesmo sistema.

A solução foi converter a classe que usava o parser XMLREADER para JAX-RPC - SAXParserFactory

O código anterior era este :

private static final String	_PARSER_NAME = "org.apache.xerces.parsers.SAXParser";
        //private static final String	_PARSER_NAME ="javax.xml.parsers.SAXParser"; //esta tentativa nao funcionou

			_parser = (XMLReader)Class.forName(_PARSER_NAME).newInstance();
			_parser.setFeature("http://xml.org/sax/features/validation", _setValidation);
			_parser.setFeature("http://xml.org/sax/features/namespaces", _setNameSpaces);
			_parser.setFeature("http://apache.org/xml/features/validation/schema", _setSchemaSupport);
			_parser.setFeature("http://apache.org/xml/features/validation/schema-full-checking", _setSchemaFullSupport);
 			_parser.setFeature("http://xml.org/sax/features/namespace-prefixes", _setNameSpacePrefixes);

			_parser.setContentHandler(this);
			_parser.setErrorHandler(this);
			_parser.setProperty("http://xml.org/sax/properties/lexical-handler", this);

O cógigo convertido para SAXParserFactory ficou :

private static final String	_PARSER_NAME = "org.apache.xerces.parsers.SAXParser";
        //private static final String	_PARSER_NAME ="javax.xml.parsers.SAXParser"; //esta tentativa nao funcionou

			//_parser = (XMLReader)Class.forName(_PARSER_NAME).newInstance();
                        _spf = SAXParserFactory.newInstance();
			_spf.setFeature("http://xml.org/sax/features/validation", _setValidation);
			_spf.setFeature("http://xml.org/sax/features/namespaces", _setNameSpaces);
			_spf.setFeature("http://apache.org/xml/features/validation/schema", _setSchemaSupport);
			_spf.setFeature("http://apache.org/xml/features/validation/schema-full-checking", _setSchemaFullSupport);
 			_spf.setFeature("http://xml.org/sax/features/namespace-prefixes", _setNameSpacePrefixes);

                        _parser = _spf.newSAXParser();

			//_parser.setContentHandler(this);
			//_parser.setErrorHandler(this);
			_parser.setProperty("http://xml.org/sax/properties/lexical-handler", this);
Criado 27 de dezembro de 2010
Ultima resposta 28 de dez. de 2010
Respostas 1
Participantes 1