Inicial > Java, weblogic > JNDI Customizado no Weblogic

JNDI Customizado no Weblogic

Diferente de vários outros applications server, o Weblogic não fornece uma forma de criar um JNDI simples com chave e valor. Já abri chamado na oracle, já tentei todas configurações possíveis mas realmente não existe.

Então vamos ao que temos: O Weblogic tem a opção de “Startup and Shutdown Classes”  então resolvi implementar uma classe java para que ele crie na arvore JNDI do server.

Encontrei um projeto free que faz justamente isso de uma forma bem simples, weblogic-jndi-startup  copiei o código e criei um projeto java no eclipse apenas para mudar o empacotamento e gerei um novo jar.

Veja o Código:

package hg.com.bb.weblogic;

import java.lang.reflect.Constructor;
import java.util.LinkedList;
import java.util.Queue;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class WeblogicJndiCustom {

public static void main(String[] args) {
InitialContext ic = null;
try {
ic = new InitialContext();
for (String arg : args) {
parseArg(ic, arg);
}
} catch (Exception e) {
e.printStackTrace();
}
}

private static void parseArg(InitialContext ic, String arg) {
// System.out.println("Found argument: " + arg);

int i = arg.indexOf('=');
if (i == -1) {
throw new RuntimeException("Bad argument: " + arg);
}
String name = arg.substring(0, i);
Object value = arg.substring(i + 1);
i = name.indexOf(' 1) {
nc = checkAndCreateContext(n, nc);
}
bind(value, (String) n.remove(), nc);
} catch (NamingException e) {
throw new RuntimeException(e);
}
}

private static void bind(Object value, String name, Context nc) throws              NamingException {
nc.bind(name, value);
}

private static Context checkAndCreateContext(Queue n, Context nc) throws NamingException {
String s = (String) n.remove();
if (checkContext(nc, s)) {
nc = (Context) nc.lookup(s);
} else {
nc = nc.createSubcontext(s);
}
return nc;
}

private static Queue split(String name) {
Queue retVal = new LinkedList();
for (String s : name.split("/")) {
for (String ss : s.split("\\.")) {
retVal.add(ss);
}
}
return retVal;
}

private static boolean checkContext(Context nc, String name) {
boolean retVal = true;
try {
retVal = nc.lookup(name) != null;
} catch (NamingException e) {
retVal = false;
}
return retVal;
}

}

Se preferir faça download do jar que eu criei. webjogicjndicustom.jar

Adiciona o webjogicjndicustom.jar ao lib do domínio do weblogic, reinicie o AdminServer e vamos criar o Startup and Shutdown Classes do Weblogic.

  1. Na tela inicial do Weblogic clique em Startup and Shutdown Classes  e clique em  New e Selecione  Startup Class e Clique em Next.
    Screen Shot 2018-06-13 at 12.05.57 PM
  2. Preencha o nome que você preferir e no *Class Name: o empacotamento + classe, se estiver usando o jar que eu criei utilize hg.com.br.webjogicjndicustom e clique em Next.
    Screen Shot 2018-06-13 at 12.07.01 PM
  3. Selecione o Target que deseja utilizar o recurso de JNDI e clique em Finish.
    Screen Shot 2018-06-13 at 12.07.13 PM
  4. Agora clique no nome do seu recurso. No exemplo: StartupClass-Teste.
    Screen Shot 2018-06-13 at 12.08.22 PM
  5. E adicione no valor Arguments: O parâmetro e o valor, o primeiro é o  JNDI-Name seguido da string que irá pegar no lookup. Ex: nome=herivelto.
    Pode utilizar alguma das opções de para ordem que ele rode.
    Utilizei marquei a Run Before Application Activations. Salve e ative as mudanças. Screen Shot 2018-06-13 at 12.08.43 PM
  6. Reinicie o servidor e veja a arvore JNDI
    Veja que adicionou um item ao JNDI chamado nome e o valor uma string herivelto.
    Screen Shot 2018-06-13 at 12.51.11 PM

Essa foi a única forma que encontrei de adicionar um JNDI name no weblogic, não é difícil, você pode baixar e utilizar essa .jar que eu criei e em alguns minutos está funcionando.

 

 

Anúncios
Categorias:Java, weblogic
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s

%d blogueiros gostam disto: