java - valid - weblogic system libraries eclipse
DeploymentException y clase no encontradas en el servidor de administración de WebLogic 11g (2)
Relacionado: cargue archivos de propiedades externas en la aplicación EJB 3 que se ejecuta en WebLogic 11
Utilizando Oracle Enterprise Pack para Eclipse, creé un Enterprise Project y lo llamé:
PropiedadesDemoEAR
También creó un módulo PropertiesDemoEARWeb en el que puse este código
(dentro de PropertiesDemoEARWeb / Java Resources / src / com.project.util):
package com.project.util;
public class PropertiesFileHandler extends ApplicationLifecycleListener {
private static final String FILE = "C:/etc/error.properties";
public void preStart(ApplicationLifecycleEvent evt) {
System.out.println("/n/n/t/tInside preStart() method/n/n");
InputStream is =
evt.getApplicationContext().getAppClassLoader().getResourceAsStream(FILE);
try {
Properties convertedProps =
convertStreamToProperties(is);
String userMissingError =
convertedProps.getProperty("USER_MISSING_ERROR");
System.out.println("/n/n/t/tuserMissingError = "
+ userMissingError + "/n/n");
} catch (Throwable e) {
e.printStackTrace();
}
}
public Properties convertStreamToProperties(InputStream is) throws IOException {
System.out.println("/n/n/t/tInside convertStreamToProperties() method/n/n");
Properties props = new Properties();
if (is == null) {
throw new FileNotFoundException("property file ''" + FILE + "'' not found");
} else {
props.load(is);
return props;
}
}
}
Dentro de PropertiesDemoEAR / EarContent / META-INF / weblogic-application.xml
Agregué el siguiente oyente declarativamente:
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-application
xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-application" >
<!--weblogic-version:10.3.5-->
<wls:application-param>
<wls:param-name>webapp.encoding.default</wls:param-name>
<wls:param-value>UTF-8</wls:param-value>
</wls:application-param>
<wls:listener>
<wls:listener-class>
com.project.util.PropertiesFileHandler
</wls:listener-class>
</wls:listener>
</wls:weblogic-application>
Haga clic derecho en el archivo PropertiesDemoEAR / Export / EAR / Destination:
C: / Oracle / Middleware / user_projects / domains / MyDomain / autodeploy
Cuando ejecuto WebLogic 11g a través de Eclipse, aparece este mensaje de error en la consola:
[ERROR] AdapterManager - ServletContainerAdapter manager not initialized correctly.
<oracle.tip.adapter.apps.AppsConnectionFactory>
ConnectionManager cm: weblogic.connector.outbound.ConnectionManagerImpl@12433e7-eis/Apps/Apps
ManagedConnectionFactory mcf:
oracle.tip.adapter.apps.AppsManagedConnectionFactory@4303022b
<Jun 30, 2011 5:50:24 PM PDT> <Error> <Deployer> <BEA-149265>
<Failure occurred in the execution of deployment request
with ID ''1309481424487'' for task ''0''. Error is:
''weblogic.management.DeploymentException: ''
weblogic.management.DeploymentException: at
weblogic.application.internal.flow.
BaseLifecycleFlow$CreateListenerAction.run(BaseLifecycleFlow.java:176) at
weblogic.security.acl.internal.
AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at
weblogic.application.internal.flow.
BaseLifecycleFlow$BaseAction.invoke(BaseLifecycleFlow.java:104) at
weblogic.application.internal.
flow.HeadLifecycleFlow.createListener(HeadLifecycleFlow.java:117)
Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassNotFoundException:
com.project.util.PropertiesFileHandler
at weblogic.utils.classloaders.
GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
Pregunta (s):
(1) ¿Qué estoy haciendo mal? ¿Por qué no puede encontrar mi clase PropertiesFileHandler?
(2) ¿Es adecuada la ubicación (c: /etc/error.properties) de mi archivo de propiedades o debería estar dentro del directorio MyDomain?
(3) ¿Existe un directorio predeterminado o un área de configuración simple que WebLogic carga archivos de propiedades a los que se puede acceder desde cualquier aplicación que se ejecute en WebLogic?
Intente asegurarse de que la clase esté en la carpeta / lib para la máquina donde se implementa la aplicación.
Lo conseguí trabajando ... El problema era que lo tenía configurado como proyecto web en lugar de un proyecto de utilidad de Java EE en Oracle Enterprise Edition para Eclipse.
Como proyecto web, estaba colocando archivos .class dentro de WEB-INF / classes en lugar de APP-INF.
Además, necesitaba poner error.properties dentro de mi dominio real.
C: / Oracle / Middleware / user_projects / domains / MyDomain
En lo que respecta a mi propia pregunta:
¿Existe un directorio predeterminado o un área de configuración simple que WebLogic carga archivos de propiedades a los que se puede acceder desde cualquier aplicación que se ejecute en WebLogic?
Si -Dweblogic.ext.dirs no está configurado, su valor predeterminado es $ DOMAIN / lib; $ WL_HOME / common / lib / ext; $ WL_HOME / server / lib / ext
Entonces, si almacena error.properties en $ DOMAIN / lib, estará en CLASSPATH y debería poder cargarlo usando getResourceAsStream ("error.properties")