que newnamenotfoundexception example basicnamingnode 12c java java-ee properties weblogic classpath

java - newnamenotfoundexception - Usando archivos de propiedades externos en weblogic



que es jndi datasource (8)

Estoy trabajando en la implementación de una aplicación J2ee que he estado implementando anteriormente en JBOSS en Weblogic 10.3.1.0. Estoy teniendo problemas con archivos de propiedades externos. En Jboss solo puedo colocar los archivos de propiedades en $ JBOSS_HOME / server / default / conf, se cargan en el classpath del sistema y puedo acceder a ellos sin ningún problema. Pude poner bibliotecas compartidas en $ MIDDLEWAREHOME / user_projects / domains / mydomain / lib y se cargaron en la ruta de clases del sistema sin ningún problema, pero no puedo cargar archivos de propiedades.

¿Alguien sabe cómo incluir archivos de propiedades externas en Weblogic?

Gracias,


Aunque puede ser un poco más de esfuerzo, si pone los archivos en un JAR antes de colocarlos en ese directorio lib , eso debería funcionar.


En weblogic, los archivos jar se cargarán desde la biblioteca y los archivos que no sean archivos jar se cargarán desde la carpeta del dominio


Hay formas de leer el archivo de propiedades en Java desde la ruta de clase weblogic

Uno (archivo de propiedades ubicado en el dominio weblogic): suelte el archivo de propiedades dentro del directorio del dominio. De esta manera, el archivo de propiedades se agrega a la ruta de clase de weblogic automáticamente y podemos leer desde Java usando resourceAsStream.

Dos (archivo de propiedades de una ubicación definida por el usuario): la ventaja de este enfoque es que el archivo de propiedad puede residir fuera del archivo JAR o EAR y puede modificarse convenientemente.

package com.test; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertyFileExample { private static Properties prop; public static void myMethod() { InputStream is = null; try { prop = new Properties(); String propFilePath = System.getProperty(“propFileLocation“); InputStream iStream = PropertyFileExample.class.getClassLoader().getResourceAsStream(propFilePath); //Note that the propFilePath is a -Dparam defined below in the setDomainEnv prop.load(iStream); prop.getProperty(“dbuser”); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

En el weblogic setDomainEnv (en bin) => necesitamos pasar la ubicación del archivo de propiedades como un -D argument a JAVA_OPTIONS

set JAVA_OPTIONS=%JAVA_OPTIONS% -DpropFileLocation =/dev/file/properties/some.properties



Me di cuenta de esto y lo hice funcionando como esperaba. Primero probé las sugerencias de arriba. Si agregué una carpeta a mi ruta de clases, o coloqué los archivos de propiedades en una carpeta de mi ruta de clases, se seleccionaron los archivos jar en el archivo, pero no los archivos de propiedades. Si pongo mis archivos de propiedades en un frasco, y los puse en una carpeta en mi ruta de clases, todo funcionó. Pero no quería tener archivos de jarrones cada vez que se realizaba un cambio. Los siguientes trabajos en mi env.

Si coloco los archivos de propiedades en% WEBLOGIC_HOME% / user_projects / domains / MYDOMAIN, entonces serán recogidos, sin tener que colocarlos en un archivo jar.


Puede establecer un directorio en la ruta de clase y colocar su archivo de propiedades personalizadas en esa carpeta / directorio. De modo que, todo el directorio junto con el archivo de propiedades estará en classpath. Para configurar el directorio en el classpath en weblogic 10.3.x

  • Cree una carpeta en la carpeta %DOMAIN_HOME%/config/ . ejemplo appConfig .
  • Coloque su archivo de propiedades personalizado (digamos config.properties ) en el directorio / carpeta appConfig .
  • Modifique setDomainEnv.cmd (Windows) para incluir appConfig en la ruta de %DOMAIN_HOME%/config/appConfig configurando %DOMAIN_HOME%/config/appConfig como valor en EXT_POST_CLASSPATH (esta variable ya está definida en el archivo setDomainEnv.cmd ) como se muestra a continuación:

    set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%/config/appConfig

Puedes acceder a ese archivo en tu código java de la siguiente manera:

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream ("config.properties"); Properties prop = new Properties(); prop.load(inputStream); String value = prop.getProperty("key");

Espero que esto ayude.


Puede ver su setDomainEnv.cmd (Windows) o setDomainEnv.sh (Unix / Linux) en sus archivos de dominio y ver qué ubicaciones se agregan en CLASSPATH para su dominio. Luego, solo elija una carpeta y coloque el archivo de propiedades allí, si desea una ubicación específica para su archivo de propiedades, simplemente edite el script.


esa fue mi solución

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); InputStream is = null; String urlExte = System.getenv("DOMAIN_HOME")+"/properties/SmsBalanceadoWS/"; org.springframework.core.io.Resource resource = ctx.getResource( "file:"+urlExte+"/application.properties"); try { is = resource.getInputStream(); } catch (IOException e) { LOGGER.debug("ERROR"+ e.getMessage()); }