¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Problemas ao ler/localizar arquivo log4j.properties em EJB: Como resolver?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 3 Vistas
0
Cargando...

Olá,

Estou implementando o Log4j no meu EJB. Agora estou enfrentando problemas para ler/localizar meu arquivo log4j.properties. Não tenho certeza do caminho onde coloquei meu log4j.properties. Tentei em vários lugares, mas parece que não está funcionando. Meu EJB está empacotado com um WAR em um arquivo EAR.

Atualmente estou colocando meu arquivo log4j.properties na pasta raiz do meu EJB. (CustomEJB>log4j.properties)

Este é o meu código no meu EJB


....
public class GatewayBean implements SessionBean {
static Logger logger =  Logger.getLogger("GatewayBean.class");
public String[] testLog() {
try{
	PropertyConfigurator.configure("log4j.properties");
	logger.info(new Date() + " testLog");
	logger.info(new Date() + " Testing for logging");
}catch (Exception e){
e.printStackTrace();
}
}
...

Quando tento carregar o arquivo de propriedades, não consigo encontrá-lo. Este é o erro que obtenho.


log4j:ERROR Não foi possível ler o arquivo de configuração [log4j.properties].#
java.io.FileNotFoundException: log4j.properties (O sistema não pode encontrar o arquivo especificado)#
log4j:ERROR Ignorando arquivo de configuração [log4j.properties].#

Não há problema para a aplicação WEB. Mas apenas para o EJB. Tentei colocá-lo em EJB>META-INF, mas também não funcionou. Então não tenho certeza de onde colocar o arquivo de propriedades para que possa ser carregado. Tentei incluí-lo no meu Java Build Path, mas não consigo, pois só é possível incluir arquivos .jar e .zip.

Obrigado antecipadamente pela ajuda.

-


Acabei de pesquisar no Google e tentei obter o caminho ao executar este programa. Percebi que o caminho é \usr\X01\DVEBMGS01\j2ee\cluster\server0

Então, coloquei o arquivo log4j.properties nesse caminho e agora consigo lê-lo. Mas não acredito que esta seja a forma correta, pois deveria estar no arquivo de implementação. O que me parece estranho é que o caminho deveria ser \usr\X01\DVEBMGS01\j2ee\cluster\server0\apps\sap.com\GatewayEAR......?

Editado por: Adrian Chan em 15 de junho de 2009 às 8:53 AM

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Obrigado.

Acredito que isso é muito melhor. Não codificar o caminho lá. Principalmente, o log4j será configurado e implantado apenas uma vez.

Obrigado pela sua ajuda.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Sim, correto.

A rota codificada é aplicável apenas se você estiver implantando o aplicativo em um sistema AS Java específico (X01 neste caso).

Se você não pretende alterar o conteúdo do arquivo log4j.properties, então pode colocá-lo como parte da hierarquia de pacotes Java. Para obter os dados, você pode carregá-lo como um recurso.

Exemplo:

Vamos supor que sua classe GatewayBean tenha o nome completo com.some.company.app.ejb.GatewayBean. Nesse caso, o arquivo log4j.properties deve estar localizado na estrutura de arquivos de classes Java em:

com/some/company/app/ejb/log4j.properties

Naturalmente, quando você construir o aplicativo, o log4j será empacotado no arquivo JAR junto com as classes Java.

Em seguida, você pode configurar o log4j da seguinte maneira:

PropertyConfigurator.configure(GatewayBean.class.getResource("log4j.properties"));

A desvantagem deste método é que você precisará reimplantar o aplicativo se precisar alterar o arquivo log4j.properties. No entanto, se precisar alterar o conteúdo do arquivo com frequência, então os dados de configuração do log4j devem ser fornecidos dinamicamente através de java.util.Properties.

Atenciosamente,

Tsvetomir

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Obrigado pela sua explicação.

Quanto à sua sugestão para o caminho, seria um caminho codificado diretamente? Não posso codificar o caminho de registro no programa, pois esta aplicação J2EE será implantada em outro servidor. Estou pensando em obter o caminho do contexto e depois mapeá-lo para obter o caminho completo para o arquivo log4j.properties. Outra coisa que me preocupa é, se não consigo fazer login no servidor SAP Netweaver para colocar meu log4j.properties, como posso fazer isso? Estou apenas procurando uma maneira de implantar meu arquivo EAR sem precisar fazer nenhuma configuração para o log4j.

Obrigado.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá,

Quando você fornece o caminho do arquivo como "log4j.properties", então a JVM procurará o arquivo no diretório de trabalho atual (CWD). Para processos de servidor, o CWD é /usr/sap/SID/INST/j2ee/cluster/serverN, onde SID é o seu ID de sistema alfanumérico de 3 caracteres, INST é o nome da instância e N é o número do nó do servidor.

No seu caso é:

/usr/sap/X01/DVEBMGS01/j2ee/cluster/server0

Portanto, você precisa deixar o arquivo lá:

/usr/sap/X01/DVEBMGS01/j2ee/cluster/server0/log4j.properties

No entanto, isso não é uma boa prática! Por quê?

O sistema SAP é uma solução de cluster. Uma vez que você adiciona outro nó de servidor, o novo processo do servidor procurará o arquivo em seu próprio CWD, que é diferente. Portanto, ao adicionar um nó de servidor, você deve considerar copiar o arquivo.

Portanto, o ideal seria manter o arquivo diretamente no compartilhamento do cluster, ou seja, /usr/sap/X01/SYS

Por exemplo, você poderia criar uma pasta para o log4j lá e copiar o arquivo para a nova pasta:

/usr/sap/X01/SYS/log4j/log4j.properties

Em seguida, em seu código, chame o método configure(String) com o caminho absoluto:

PropertyConfigurator.configure("/usr/sap/X01/SYS/log4j/log4j.properties");

Espero que isso ajude.

Atenciosamente,

Tsvetomir

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?