[Resolvido] Acessar Datasource do Jboss de uma aplicação webstart

2 respostas
mjrsilva

Olá pessoal,

Queria saber se alguém tem uma dica quanto a isso pra me dar. O negócio é o seguinte, minha aplicação esta no JBoss mas ela é webstart, acesso ela pelo browser mas ela roda local. Hoje a conexão com o banco é feita via jdbc puro mas preciso adaptá-la para buscar a conexão via datasource no mesmo servidor de onde ela é startada.
Alguém tem uma idéia se isso é possível e como faze-lo ?
Obrigado

Abraço

2 Respostas

E

Aponte a conexão para a URL do servidor. Lembre-se de verificar as permissões de acesso no server.

mjrsilva

Resolvi aqui, mas não é tão simples como o amigo falou.
Primeiramente é preciso criar um arquivo xml o qual será o seu datasource, e colocá-lo na pasta deploy do JBoss.

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
 <local-tx-datasource>
<jndi-name>Nome_do_datasource</jndi-name>
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@servidor:porta:instancia</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>USER</user-name>
<password>******</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>100</max-pool-size>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Banco(ex:Oracle9i)</type-mapping>
</metadata>
 </local-tx-datasource>
</datasources>

Feito isso colocar jbossall-client.jar nas libs do projeto.
Agora vem a parte do java em si:

String strServer = System.getProperty("server.url");
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
env.put(Context.PROVIDER_URL, strServer);
// busca do datasource
Context ic = null;
DataSource dataSource = null;
ic = new InitialContext(env);
dataSource = (DataSource) ic.lookup("Nome_do_datasource");
conn = dataSource.getConnection();

No meu caso eu setei as propriedades do jndi direto no código, pegando a url apartir de uma propriedade do sistema, mas isso pode ser feito através de arquivo, colocando um arquivo jndi.properties no diretório lib do seu java_home com o seguinte conteúdo:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=jnp://servidor:porta

Era isso, espero que ajude mais alguém!
Abraços

Criado 23 de abril de 2010
Ultima resposta 11 de mai. de 2010
Respostas 2
Participantes 2