Foros del Web » Programación para mayores de 30 ;) » Java »

Problemas con org.apache.axis.utils.XMLUtils

Estas en el tema de Problemas con org.apache.axis.utils.XMLUtils en el foro de Java en Foros del Web. Buenas, estoy intentando hacer lo siguiente con la clase org.apache.axis.utils.XMLUtils, y me compila perfectamente ya que tengo la librería de axis asociada a mi proyecto, ...

  #1 (permalink)  
Antiguo 26/02/2016, 06:26
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Problemas con org.apache.axis.utils.XMLUtils

Buenas,

estoy intentando hacer lo siguiente con la clase org.apache.axis.utils.XMLUtils, y me compila perfectamente ya que tengo la librería de axis asociada a mi proyecto, pero cuando ejecuto me dice que no la encuentra....cuando hago debugg falla justo en la línea que marco en rojo:

public String llamada(String endpoint, String fichero) throws TransformerException, ParserConfigurationException,
SAXException, IOException {

Document respuesta = null;

try {
InputStream is = Thread.currentThread().getContextClassLoader().get ResourceAsStream(fichero);

Document peticion = XMLUtils.newDocument(is);

DIIClient clienteDinamico = new DIIClient();

respuesta = clienteDinamico.invocarCliente(peticion, endpoint);

}catch (Exception e) {
e.printStackTrace();
}
r = GenerarRespuesta.Generar(respuesta, fichero);
return r.get(0).toString();

}

No lo puedo entender...además ese mismo método (llamada()) lo tengo en otro proyecto y va perfecto, no lo puedo entender...la única diferencia es que en el proyecto desde el cual me funciona se llama al método desde un main() y en el que no me funciona desde un servlet...no se ya qué hacer...alguien que me pueda ayudar?

Muchas gracias.
  #2 (permalink)  
Antiguo 26/02/2016, 07:37
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

La libreria, ademas de en tiempo de compilacion, tiene que estar disponible en runtime.

Cuando se ejecuta tu aplicacion Web no encuentra la libreria. Lo mas sencillo es que la incluyas en el directorio WEB-INF/lib de tu aplicacion tal y como especifica el standard Java EE.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 29/02/2016, 09:11
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

en primer lugar mil gracias por contestar...

Te cuento, hice lo que me indicabas, poner las librerías en WEB-INF/lib en vez de en una carpeta que tenía fuera incluso del /WebContent, y ahora me sale este error:

feb 29, 2016 3:59:21 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:PServicio' did not find a matching property.
feb 29, 2016 3:59:21 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Prueba' did not find a matching property.
feb 29, 2016 3:59:21 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_65\bin;C:\windows\Sun\Java\bin ;C:\windows\system32;C:\windows;C:\Program Files\Java\jre1.8.0_65\bin\client;C:\Program Files\Java\jre1.8.0_65\bin;D:\Informatica\clients\ DT\bin;D:\Informatica\clients\tools\datadirect;D:\ Informatica\clients\tools\odbcdrv;D:\Informatica\c lients\tools\jdbcdrv;C:\ProgramData\Oracle\Java\ja vapath;C:\Informatica\9.1.0\DataTransformation\bin ;C:\Informatica\9.1.0\clients\tools\datadirect;C:\ Informatica\9.1.0\clients\DeveloperClient\bin;C:\I nformatica\9.1.0\clients\java\jre\bin\server;C:\or acle10g\bin;C:\oracle10g\jre\1.4.2\bin\client;C:\o racle10g\jre\1.4.2\bin;C:\windows\system32;C:\wind ows;C:\windows\System32\Wbem;C:\windows\System32\W indowsPowerShell\v1.0\;C:\Program Files\Common Files\ThinPrint\;C:\Program Files\Java\jdk1.8.0_40\bin;.
feb 29, 2016 3:59:21 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
feb 29, 2016 3:59:21 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 499 ms
feb 29, 2016 3:59:21 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
feb 29, 2016 3:59:21 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.18
feb 29, 2016 3:59:22 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(C:\Users\esther.sanchez\Desktop\PF C\Proyectos\.metadata\.plugins\org.eclipse.wst.ser ver.core\tmp1\wtpwebapps\Prueba\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
feb 29, 2016 3:59:22 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(C:\Users\esther.sanchez\Desktop\PF C\Proyectos\.metadata\.plugins\org.eclipse.wst.ser ver.core\tmp1\wtpwebapps\Prueba\WEB-INF\lib\servletapi-2.3.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
feb 29, 2016 3:59:23 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
feb 29, 2016 3:59:23 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
feb 29, 2016 3:59:23 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/30 config=null
feb 29, 2016 3:59:23 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2111 ms
feb 29, 2016 3:59:25 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to read TLD "META-INF/c.tld" from JAR file "file:/C:/Users/esther.sanchez/Desktop/PFC/Proyectos/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/Prueba/WEB-INF/lib/standard-1.1.1.jar": org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV
at org.apache.jasper.compiler.DefaultErrorHandler.jsp Error(DefaultErrorHandler.java:51)
at org.apache.jasper.compiler.ErrorDispatcher.dispatc h(ErrorDispatcher.java:409)
at org.apache.jasper.compiler.ErrorDispatcher.jspErro r(ErrorDispatcher.java:181)
at org.apache.jasper.compiler.TagLibraryInfoImpl.<ini t>(TagLibraryInfoImpl.java:182)
at org.apache.jasper.compiler.Parser.parseTaglibDirec tive(Parser.java:431)
at org.apache.jasper.compiler.Parser.parseDirective(P arser.java:494)
at org.apache.jasper.compiler.Parser.parseElements(Pa rser.java:1444)
at org.apache.jasper.compiler.Parser.parse(Parser.jav a:138)
at org.apache.jasper.compiler.ParserController.doPars e(ParserController.java:216)
at org.apache.jasper.compiler.ParserController.parse( ParserController.java:103)
at org.apache.jasper.compiler.Compiler.generateJava(C ompiler.java:154)
at org.apache.jasper.compiler.Compiler.compile(Compil er.java:315)
at org.apache.jasper.compiler.Compiler.compile(Compil er.java:295)
at org.apache.jasper.compiler.Compiler.compile(Compil er.java:282)
at org.apache.jasper.JspCompilationContext.compile(Js pCompilationContext.java:586)
at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)


y es por ponerlas en esa ruta...cuando las pongo en la carpeta fuera del WebContent no pasa...que puede pasar? alguna idea?

Muchas gracias de nuevo.

Un saludo.
  #4 (permalink)  
Antiguo 29/02/2016, 10:04
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

Cita:
Prueba\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Por algun extrano motivo has metido en /lib de tu proyecto las librerias de servlets, tags, etc y estas entran en conflicto con las ya incluidas por el servidor.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 29/02/2016, 11:19
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Muy buenas Profesor_Falken,

efectivamente tenía librerias en conflicto con las del servidor, al quitarlas ya no me sale ese error, incluso ya me reconoce la línea que me fallaba:

Document peticion = XMLUtils.newDocument(is);

pero se me va por la exception capturada por que la variable "is" que le paso está a null, y no debería pasarle un null, es como si ahora no reconociera la línea anterior:

InputStream is = Thread.currentThread().getContextClassLoader().get ResourceAsStream(fichero);

mejor dicho, sí la reconoce pero devuelve un null cuando la variable "fichero" que le paso tiene valor...no lo entiendo...anteriormente me lo hacía...

Muchas gracias otra vez, un placer tratar con gente así.
  #6 (permalink)  
Antiguo 29/02/2016, 14:48
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

Cual es el contenido de la variable fichero? Seguramente me temo que sera una ruta absoluta al fichero en cuestion.

El problema seguramente es que la ruta existia en el antiguo proyecto pero en el nuevo hay que retocarla (o buscar como hacerla relativa y/o generica).

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #7 (permalink)  
Antiguo 01/03/2016, 03:27
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

la ruta donde está el fichero es:

C:/Users/.../Desktop/PFC/Proyectos/PCliente/build/classes/

ya la he modificado con la nueva y el fichero se crea previamente en esa ruta perfectamente...

Lo que va en la variable "fichero" es el nombre de ese fichero (directorio.xml), un string vamos, y en la línea donde se devuelve el null llega con valor dicha variable...no lo entiendo...antes sí me funcionó.

Gracias.
  #8 (permalink)  
Antiguo 01/03/2016, 04:20
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

C:/Users/.../Desktop/PFC/Proyectos/PCliente/build/classes/

No es una ruta correcta cuando la aplicacion corre sobre un servidor.

getResourceAsStream() espera que le des un ruta en el classpath de la aplicacion.

Normalmente el classpath de la aplicacion web es todo lo que esta en WEB-INF/classes y WEB-INF/lib asi como las demas rutas que incluya el propio servidor.

El fichero deberia generarse en alguna de dichas rutas para que funtione correctamente.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #9 (permalink)  
Antiguo 01/03/2016, 05:12
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

tienes razón, seguro que es por lo que dices, de hecho la he quitado y me da el siguiente error:

java.io.FileNotFoundException: C:\Program Files\eclipseEuropa\directorio.xml (Access is denied)

es como si el classpath fuera "C:\Program Files\eclipseEuropa" pero no sé cómo cambiar eso, ¿me podrías indicar cómo configurar el classpath de un proyecto dentro de eclipse?

Muchas gracias.
  #10 (permalink)  
Antiguo 01/03/2016, 09:50
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

El problema no esta con el classpath del proyecto en eclipse, sino con el classpath del servidor.

En tu caso parece que utilizas el servidor que viene embebido en Eclipse, por lo que la ruta del classpath en la que va a buscar el fichero directorio.xml seria algo como:

C:\Users\esther.sanchez\Desktop\PF C\Proyectos\.metadata\.plugins\org.eclipse.wst.ser ver.core\tmp1\wtpwebapps\Prueba\WEB-INF\classes

Y

C:\Users\esther.sanchez\Desktop\PF C\Proyectos\.metadata\.plugins\org.eclipse.wst.ser ver.core\tmp1\wtpwebapps\Prueba\WEB-INF\lib

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #11 (permalink)  
Antiguo 01/03/2016, 11:22
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

he intentado configurar el classpath del servidor como decías, y si, tenias razon, no estaba seleccionada la opcion para que tire del instalado en C:\\ en su Properties, pero aún así nada...

En Classpath Variables del eclipse he visto que tiene creada una variable llamada ECLISE_HOME que tiene la ruta C:\Program Files\eclipseEuropa y que no me deja modificar ni eliminar...puede ser por esto?

Como podría solucionar esto?

Muchas gracias.

un saludo.
  #12 (permalink)  
Antiguo 04/03/2016, 01:35
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

quiero añadir al anterior mensaje que es muy extraño lo que me pasa porque cuando ejecuto la aplicación en modo Java Application (sin servlet) me coge la ruta que le indico (C://...) perfectamente...pero si ejecuto con Run on Server (con servlet) no me reconoce el fichero que dejo en esa ruta....

No sé qué hacer ya...

Gracias.
  #13 (permalink)  
Antiguo 05/03/2016, 03:23
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

No tiene nada de extrano. Es lo que te estoy intentando decir. Cuando la aplicacion corre en el servidor el classpath no tiene nada que ver con el classpath usado cuando ejecutas como aplicacion.

El classpath del servidor se configura en la configuracion del servidor en eclipse. Normalmente deberias poder establecerlo en Run -> Run Configurations... -> Classpath

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #14 (permalink)  
Antiguo 08/03/2016, 11:23
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Vale, ahora sí te entiendo...

Pero no doy con la configuración, en el menú Run, no encuentro ningún Run Configurations... he intentado con otras opciones y nada...tengo eclipse Europa, no se si sera por eso, ¿me podrías indicar donde es exactamente?

Muchas gracias!
  #15 (permalink)  
Antiguo 08/03/2016, 12:43
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problemas con org.apache.axis.utils.XMLUtils



Yo uso Eclipse Mars, pero dudo mucho que la ubicacion una opcion tan importante como esa haya cambiado en los ultimos anos.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #16 (permalink)  
Antiguo 09/03/2016, 05:07
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

siento ser tan pesada...sorry....pero es que a mi no me sale el mismo menú que a ti... Me sale la opción Open Run Dialog justo debajo de Run As (no consigo insertar una imagen para que lo veas mejor...), el caso es que cuando le doy ahi si veo una pestaña que pone Classpath, pero no me sirve para configurar el Classpath del servidor...ahi no debe ser...y por mas que he mirado no encuentro esa configuración dentro del Eclipse Europa... ya estoy pensando en bajarme otro eclipse y todo...

Muchas gracias.
  #17 (permalink)  
Antiguo 09/03/2016, 07:37
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Es ahí, en Run dialog

http://help.eclipse.org/mars/index.j...run_dialog.htm

De todas formas ¿hay alguna razón para que estés usando un eclipse del año 2007?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #18 (permalink)  
Antiguo 11/03/2016, 08:04
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas Xerelo,

muchas gracias por la contestación...pero no doy con ello, por mas que investigo no llego a dar con el lugar exacto para poder configurarlo...

No hay ninguna razón por la que use ese eclipse, es porque es el que tenía desde hace tiempo...estoy pensando en bajarme otro la verdad...no se, estoy desesperada...

Seguiré investigando de todas formas...

Muchas gracias!
  #19 (permalink)  
Antiguo 11/03/2016, 12:19
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 2 meses
Puntos: 11
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

No te aparecen opciones de servidor porque de seguro bajaste "eclipse for java developers" y tienes que bajar "eclipse for java JEE developers"
  #20 (permalink)  
Antiguo 15/03/2016, 10:29
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

al final he optado por bajarme el Eclipse Mars, y la verdad es que mola...me he modernizado jeje.....

Me fui al menú Run Configurations, pero no sé como se configura ahi, el caso es que investigando creo que he dado con ello, tenía puesto en el Properties del tomcat del eclipse la opcion "Use Tomcat installation", en vez de "Use workspace metadata", y ahora sí me crea mi proyecto en esa ruta que es la que decías Profesor_Falken...Pero no sé, dentro del código cómo poner que deje mi fichero en /WEB-INF/classes, he probado de todo y lo que hace es generar una carpeta en el escritrorio con /WEB-INF/classes/directorio.xml, ¿por qué? ¿cómo debo indicar en el código que deje el fichero en "C:\Users\esther.sanchez\Desktop\PFC\Proyectos\.me tadata\.plugins\org.eclipse.wst.server.core\tmp1\w tpwebapps\PCliente\WEB-INF\classes" pero sin poner toda la ruta a pelo ya que al ser la ruta del classpath debería reconocerla no?

Muchas gracias.

Un saludo.
  #21 (permalink)  
Antiguo 15/03/2016, 16:31
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

No tienes que poner esa ruta absoluta, ese directorio es algo interno que utiliza eclipse para usar tomcat, para ti ese directorio físico no existe.

De hecho tampoco deberías tocar el directorio classes, si tienes tu proyecto bien configurado eclipse compila tu código y lo mete ahí, ya que el directorio WEB-INF es un standard y ya está incluido en el classpath. WEB-INF es el raíz para java.

Salvo excepciones, nunca deberías usar rutas absolutas de fichero, lo que pasa es que al estar perdido se tira por la ruta más "sencilla".
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #22 (permalink)  
Antiguo 16/03/2016, 04:18
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Hola Xerelo,

he quitado directamente de mi codigo la dirección absoluta, de tal manera que guarde el fichero automáticamente en el classpath (WEB-INF/classes), pero me lo guarda en el Desktop, no consigo que lo meta en el classpath...

La parte de mi código donde guardo el fichero es:

// static String directorio = "WEB-INF/classes";

// Declaración del nombre del fichero XML
String fichero = "directorio.xml";

// File dir = new File (directorio);
// dir.mkdirs();
// File file = new File(dir, fichero);
File file = new File(fichero);


es decir, solo haría las filas en rojo...no le indico en ninguna parte la dirección donde quiero que me lo guarde porque debería ser WEB-INF/classes por defecto no? o hay algo que no estoy haciendo bien?

Muchas gracias.
  #23 (permalink)  
Antiguo 16/03/2016, 08:57
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

En principio es imposible que te lo guarde en el Desktop con una ruta relativa, la única forma de que pase eso es que estés ejecutando tu clase/jar como aplicación (llamando a un main).

El problema es que tienes unos conocimientos casi nulos, por lo que no sabes qué estás haciendo y no es sencillo que nosotros nos lo imaginemos con la información que das.

Empieza por poner capturas de pantalla de la estructura de ficheros de tu proyecto, de la configuración del buildpath y tu código al completo

Cita:
es decir, solo haría las filas en rojo...no le indico en ninguna parte la dirección donde quiero que me lo guarde porque debería ser WEB-INF/classes por defecto no? o hay algo que no estoy haciendo bien?
File file = new File(fichero) no crea un fichero físico, con el código que has puesto es imposible que se cree nada, ni en el Desktop ni en ningún sitio.

http://www.java-examples.com/create-new-empty-file

Lo dicho, tienes que tratar de informarte sobre lo que estás haciendo, de lo contrario hay que jugar a adivinar qué es lo que haces mal.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #24 (permalink)  
Antiguo 16/03/2016, 11:24
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Es cierto que me falta mucho por aprender todavia sobre java, pero tambien os he preguntado cosas muy concretas sobre mi proyecto por no cargaros mucho de información, pero es verdad que al final es posible que no se entienda bien...y menos por aqui...

No utilizo un main(), es un servlet que dentro de su doPost() llama a una función que crea un fichero XML con cierta información, en concreto la función que me crea ese XML es:

public static String Crear(String arg) throws ParserConfigurationException, IOException, TransformerException {

// Declaración del nombre del fichero XML
String fichero = "directorio.xml";

// Obtención del TransfomerFactory y del Transformer a partir de él.
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance ( );
DocumentBuilder builder = factory.newDocumentBuilder();
Document documento = builder.newDocument();

// Creación de la fuente XML a partir del documento.
DOMSource source = new DOMSource(documento);

// Creación del resultado, que será el fichero XML.
// File dir = new File (directorio);
// dir.mkdirs();
// File file = new File(dir, fichero);
File file = new File(fichero);

try {
// out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"
// standalone=\"no\"?>");
Element servicio = (Element) documento.appendChild(documento.createElement("bus caServicio"));
Element nombre = (Element) servicio.appendChild(documento.createElement("nomb reServicio"));
nombre.setTextContent(arg);
} catch (Exception e) {
e.getMessage();
}

// Se realiza la transformación, de Document a Fichero.
StreamResult result = new StreamResult(file);
transformer.transform(source, result);

return fichero;
}


Una vez creado el supuesto fichero XML en la ruta por defecto (que es lo que no consigo), dentro del mismo doPost(), llama a otro método:

public String llamada(String endpoint, String fichero) throws TransformerException, ParserConfigurationException,
SAXException, IOException {

Document respuesta = null;

try {
InputStream is = Thread.currentThread().getContextClassLoader().get ResourceAsStream(fichero);

Document peticion = XMLUtils.newDocument(is);

DIIClient clienteDinamico = new DIIClient();

respuesta = clienteDinamico.invocarCliente(peticion, endpoint);

}catch (Exception e) {
e.printStackTrace();
}
r = GenerarRespuesta.Generar(respuesta, fichero);
return r.get(0).toString();

}


y lo marcado en rojo es lo que me devuelve null, y es porque no encuentra el fichero XML...

Espero haberme explicado mejor ahora...

Gracias y lo siento.
  #25 (permalink)  
Antiguo 17/03/2016, 05:45
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Primero aclarar que cuando me refería a usar rutas relativas, debería haberme explicado mejor, en el caso del que estamos hablando me refería a que hay que crear la ruta absoluta mediante las herramientas que nos proporciona java. Al acceder a un fichero mediante getResource sí suelen usarse rutas relativas de verdad.

Cuando trabajamos con aplicaciones web, se supone que nuestro código debe ser lo más portable posible, por lo que usar rutas absolutas como literales es muy mala idea. Generalmente a nosotros sólo nos va a interesar lo que ocurre dentro de nuestro proyecto, por eso java nos da herramientas como

https://docs.oracle.com/cd/E17802_01...va.lang.String)

con

Cita:
String path = getServletContext().getRealPath("WEB-INF/");
tendrás la ruta absoluta a WEB-INF independientemente de si lo ejecutas en eclipse o en un servidor. Eso sí, la tienes que recuperar en el servlet.

Como curiosidad, con tu código y la ruta absoluta "directorio.xml" , no da error al crear el fichero pero no se crea físicamente en ningún sitio, y no sé la razón.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #26 (permalink)  
Antiguo 21/03/2016, 06:33
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

tenías razón, con getServletContext().getRealPath() me recupera la ruta relativa del proyecto, que en mi caso es:

C:\Users\esther.sanchez\Desktop\PFC\Proyectos\.met adata\.plugins\org.eclipse.wst.server.core\tmp1\wt pwebapps\PCliente\WEB-INF

para ello, he introducido en mi codigo:

String path = getServletContext().getRealPath("WEB-INF");

// Creamos xml de entrada para el servicio Web "Directorio"
f = CrearXML.Crear(path,"diagnosis");

p.llamada(endpoint, path + "\\" + f);


y el fichero que quiero (directorio.xml), es decir, lo que devuelve "f", me lo crea ahi sin problema, incluso ahora en el método "llamada()" reconoce el fichero:

public String llamada(String endpoint, String fichero) throws TransformerException, ParserConfigurationException,
SAXException, IOException {

Document respuesta = null;

try {
InputStream is = Thread.currentThread().getContextClassLoader().get ResourceAsStream(fichero);

Document peticion = XMLUtils.newDocument(is);

DIIClient clienteDinamico = new DIIClient();

respuesta = clienteDinamico.invocarCliente(peticion, endpoint);

}catch (Exception e) {
e.printStackTrace();
}
r = GenerarRespuesta.Generar(respuesta, fichero);
return r.get(0).toString();

}


Pero a pesar de que ahora la variable "fichero" = C:\Users\esther.sanchez\Desktop\PFC\Proyectos\.met adata\.plugins\org.eclipse.wst.server.core\tmp1\wt pwebapps\PCliente\WEB-INF\directorio.xml, cosa que al menos hasta ahora no hacía...la variable "is", sigue siendo null...

¿Qué más puede pasar?

Mil gracias de nuevo por vuestra ayuda!
  #27 (permalink)  
Antiguo 21/03/2016, 07:35
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

Eso es porque ahora estas intenando acceder al fichero por ruta absoluta en lugar de apoyarte en el classpath usado por el classloader.

Si lo reemplazas por esto deberia funcionarte:

Código Java:
Ver original
  1. InputStream is = new FileInputStream(fichero);

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #28 (permalink)  
Antiguo 22/03/2016, 05:41
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Buenas,

efectivamente tenias razón!! al poner "InputStream is = new FileInputStream(fichero);" funciona perfectamente! He ido solucionando otros problemillas que me han ido surgiendo, pero ahora por fin me lee el fichero!!

Pero ahora tengo otro error, es debido al Servicio al que invoco, es decir, como mi aplicación es un Web Service, tengo otro proyecto a parte (PServicio) que es donde tengo implementados los diferentes servicios a los que llamo desde el primer proyecto (el proyecto cliente), y claro, ahora es en PServicio donde me está ocurriendo el mismo problema anterior, necesito leer un fichero que tengo creado previamente en PServicio (que es un fichero .owl) y no lo consigue encontrar (otra vez tenía puesto una ruta relativa), pero claro, en PServicio no hay servlet para que pueda utilizar el método "getServletContext().getRealPath("WEB-INF");" y así poder leer su classpath...No se, o como podría hacerlo? Tengo declarado el fichero así:

static final String inputFileName = "C:/Documents and Settings/ESTHERSL/Desktop/PFC + doc/Proyectos/PServicio/OntologiaMedicina.owl";

pero claro, así es una ruta relativa, he probado a poner:

static final String inputFileName = "OntologiaMedicina.owl";

y tampoco..el error que sale es:

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.IllegalArgumentException: File: OntologiaMedicina.owl not found
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:ESTHERSANCHEZ

java.lang.IllegalArgumentException: File: OntologiaMedicina.owl not found
at org.apache.axis.message.SOAPFaultBuilder.createFau lt(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElemen t(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.en dElement(DeserializationContext.java:1087)
at org.apache.xerces.parsers.AbstractSAXParser.endEle ment(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.sc anEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerI mpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerI mpl.scanDocument(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.AbstractSAXParser.parse( Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser .parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.pa rse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPar t.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.ja va:435)
at org.apache.axis.handlers.soap.MustUnderstandChecke r.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClien t.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java :2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:1792)
at localhost.axis.services.DIIClient.invocarCliente(D IIClient.java:67)
at localhost.axis.services.DIIClient.invocarCliente(D IIClient.java:24)
at localhost.axis.services.SeleccionarSintomas.llamad a(SeleccionarSintomas.java:49)
at localhost.axis.services.SeleccionarSintomas.doPost (SeleccionarSintomas.java:130)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
[Fatal Error] :-1:-1: Premature end of file.



Muchas gracias me estais ayudando un montón!!
  #29 (permalink)  
Antiguo 30/03/2016, 04:41
 
Fecha de Ingreso: enero-2016
Mensajes: 25
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Hola,

Sigo sin poder solucionar lo del mensaje anterior....no consigo que encuentre el fichero...¿Alguien sabe como puedo hacerlo?

Muchas gracias.

Un saludo.
  #30 (permalink)  
Antiguo 30/03/2016, 08:46
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problemas con org.apache.axis.utils.XMLUtils

Eso es porque las rutas relativas no encuentran el fichero en cualquier sitio del PC, sino que empiezan a contar desde la carpeta raíz de tu proyecto.

Por ejemplo si creas una pagina web en una carpeta X y tienes como recurso una imagen llamada imagen.jpg cuando la referencias desde el html pones src="imagen.jpg" y la tendrías que tener al mismo nivel que tu pagina web.

Puedes añadirla dentro una carpeta imagenes dentro de X y al referenciarla entonces habría que poner src="imagenes/imagen.jpg" para recuperarla.

Pues lo mismo con java... es decir el documento tiene que estar dentro de tu proyecto y añadir la ruta adecuada.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: clase, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:09.