Arquivo

Arquivo de maio, 2007

Recuperando um datasource no Glassfish a partir de um cliente desktop

No post anterior falei como recuperar um datasource no Glassfish a partir de um client web. Hoje faleremos como fazer a mesma coisa. só que a partir de um client desktop.

O processo consiste em iniciar o contexto com atributos adicionais que auxiliem a aplicação a procurar de forma correta e encontrar o recurso solicitado.

public javax.sql.DataSource getDataSource() {
try {
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty(Context.URL_PKG_PREFIXES, "com.sun.enterprise.naming");
props.setProperty(Context.STATE_FACTORIES, "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
// servidor
props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
// porta do servidor
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext initialContext = new InitialContext(props);
DataSource datasource = (DataSource) initialContext.lookup("jdbc/seuDataSource");
return datasource;
} catch (NamingException ex) {
ex.printStackTrace();
return null;
}
}

Os atributos:

props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

são opcionais e só precisam ser utilizados se o servidor estiver em um endereço diferente do cliente ou porta for diferente da padrão.

Algo que é importante observar é que é necessário que o classpath da aplicação client esteja configurado com os seguintes pacotes:

$GLASSFISH_HOME/lib/appserv-admin.jar
$GLASSFISH_HOME/lib/appserv-rt.jar
$GLASSFISH_HOME/lib/install/applications/jmsra/imqjmsra.jar
$GLASSFISH_HOME/lib/javaee.jar

além, é claro, do pacote com o driver JDBC para banco de dados que você está tentando acessar.

Categories: java Tags:

Recuperando um datasource no Glassfish

Quando se está trabalhando com um servidor de aplicações, é comum a necessidade de se acessar diretamente os recursos do banco de dados.

Mesmo quando se está usando frameworks de persistência como JPA ou mesmo Entities Beans pode-se haver a necessidade de fazer alguma consulta direta ao banco de dados. Nesse caso a melhor opção recuperar o datasource registrado no servidor.

Os passos são os seguintes:
No arquivo web.xml registre o recurso que deseja recuperar:


jdbc/seuDataSource
javax.sql.DataSource
Container
Shareable

Após isso só é necessário buscar no contexto seu datasource. Alguma coisa mais ou menos assim:

public javax.sql.DataSource getDataSource() {
InitialContext initialContext;
try {
initialContext = new InitialContext();
DataSource datasource = (DataSource) initialContext.lookup("java:comp/env/jdbc/seuDataSource");
return datasource;
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}

e para usar a conexão basta:

datasource.getConnection()
Categories: java Tags:

Sobre Isso

Sobre Isso é um espaço que disponibilizo com o objetivo de compartilhar vários assuntos do dia-a-dia de cada um de nós que está de alguma forma ligado à tecnologia. Especialmente na área de programação, falaremos sobre a plataforma Java e eventualmente outras linguagens, sempre que oportuno.

Falarei também de Linux, tentando trazer dicas que poderão facilitar a vida daqueles que por opção ou não, migraram para o mundo do Pinguim.

Outros temas que me parecerem interessantes também serão compartilhados sempre que pertinentes.

até mais.

Paulo Cordeiro

Categories: geral Tags: