Subir Adjunto a servidor JBoss

Que onda chavos, como les va en estas vacaciones, a mi bien ya que no hay tanto tráfico hacia el trabajo jejeje.

Pues bien les tengo una consulta, necesito opiniones porfa.

Les cuento que estoy trabajando con Struts 1.3.8. Estoy tratando de subir adjuntos a mi servidor en donde esta mi aplicacion pero no lo logro, ya intente subirlos a una pc dentro de mi red y si lo logro mas o menos así

File archivoDirectorio = null;
               
                if (tipo==0) {
                        archivoDirectorio = new File("\\\\xx.xx.xx.xxx\\DOCUMENTOS\\ARCHIVOS_TEMPORALES\\");
                }

Ya he intentado con esta ruta

File archivoDirectorio = null;
               
                if (tipo==0) {
                        archivoDirectorio = new File("/aplicación/DOCUMENTOS/ARCHIVOS_TEMPORALES/");
                }

pero esta me crea la ruta en C: y lo sube ahí pero lo que quiero es subirlo a una carpeta dentro de mi aplicación ya estando en producción dentro de un servidor JBoss, que ruta relativa uso??? Tiene que ver el servidor de aplicaciones???

Espero haberme explicado...

Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

por qué?

Por qué quieres subir el archivo a un directorio en tu aplicación? ese directorio puede desaparecer por distintas razones (redeploy, undeploy, por ejemplo). Es mejor que los guardes afuera del contenedor.

Imagen de neko069

No sería más fácil meterlos

No sería más fácil meterlos en un package, y los localizas con un getResourceAsStream("/ruta/a/tu/Archivo.extension");

Imagen de ezamudio

pero los quiere subir

O entendí mal? Según yo lo que quiere es recibir archivos via un file upload o algo así y guardarlos, pero los quiere guardar en algun directorio interno de la aplicación, lo cual es mala idea porque el contenedor podría borrarlo o incluso prohibir el acceso.

Imagen de ghosttigger1203

buena practica

Claro, la idea de la aplicación es subir multiples adjuntos via input file y guardarlos en esta ruta /home/oracle/resources/minutas/ que es de mi servidor, a como lo veo es una ruta relativa a mi aplicación(al root de la misma), así lo quieren. Tines razón podría borrarse o algo por el estilo.

Suponiendo que se suban a una carpeta interna de la aplicación, como pondría la ruta para que se alojen ahí???

    webapps
      aplicación

        archivos

Otra opción es subirlos sin que esten dentro del directorio interno de la aplicación, ejemplo:

    webapps
      aplicación

      archivos

Cual seria la ruta para subirlos? al tomar el context path de mi aplicación y concatenarselo a mi ruta los guarda pero creando una carpeta en c:"contextpath"+/home/oracle/resources/minutas/ y no quiero que se guarden en c: sino dentro del directorio del servidor.

Espero haberme explicado, gracias.

Saludos.

Imagen de ezamudio

ruta absoluta

La verdad es que lo mejor es que uses una ruta absoluta, simplemente debes dejarla configurable, para que puedas modificarla sin tener que compilar la aplicación. De ese modo puedes usar una ruta en tu compu, otra en pruebas, otra en producción.

Imagen de darklatiz

Utiliza el Servlet Context

Normalmente cuándo haces un Deployment, en este caso jboss, agarra el contenido de tu WAR, EAR y crea la estructura de directorios en la carpeta de trabajo de jboss (no recuerdo cuál es), entonces en tiempo de ejecución tu aplicación se encuetra desplegada en una ruta parecida a lo siguiente
c:\jboss\app\work\miApp-idAsignadoPorJboss\ y no en c:\jboss\app\deploys\ entonces si lo que quieres es guardar un archivo dentro de esta estructura tienes que hacer referencia al realPath esto lo obtienes del servlet context:

final String TMP_DIR_PATH = "/archivos/uploads"; // esto forma parte de tu estructura de directorios del WAR
ServletContext context = null;
String realPath = context.getRealPath(TMP_DIR_PATH);

//codigo para guardar archivo en ruta real
...

Ahora lo interesante es obtener el servletContext de tu struts Action, sí se puede aunque por el momento no recuerdo, alguna vez lo hice.

Espero te sirva esto.

Saludos.

No se de jBoss

Pues acerca de Jbosss no se que carambas pueda retornar System.getProperty("user.dir") pero al menos en GlassFish te regresa la carpeta donde esta el dominio del servidor osea esto ...\glassfish-3.0.1\glassfish\domains\domain1\ y ahi es donde se crean los archivos temporales cuando hago un FileUpload

Imagen de ghosttigger1203

probando sugerencias...

Gracias chavos por las sugerencias, las probaré en un momento y les cuento como me fué, tmb tengo que definir bien con el usuario realmente dónde quiere que se suban los archivos (para no hacer doble trabajo jejeje).

En un rato posteo la implementación que haga vale.

Saludos.

Imagen de ghosttigger1203

Adjuntos JBoss

Que onda chavos, solo les escribo para comentarles que ya complete la tarea de subir adjuntos con Struts y JBoss, el asunto se volvió fácil ya que el usuario solo quería subirlos al servidor, no necesariamente en la ruta dentro de la jerarquía de la aplicación, así que se subieron a una carpeta del servidor, sino existe se crea y si está solo se suben los archivos ahí.

Gracias por sus sugerencias, estamos en contacto.

Saludos.