Existe uma maneira padrão para definir uma fonte de dados JDBC para contêineres Java EE?

Eu sei que para o JBoss você precisa de um arquivo [name] -ds.xml no subdiretório / deploy da instância apropriada. Eu não tenho nenhuma experiência com outros contêineres Java EE, mas estou tentando manter os padrões, tanto quanto possível. Existe uma maneira padrão de definir uma origem de dados JDBC e implantá-la? se possível eu gostaria de include minha fonte de dados dentro do arquivo * .ear (por exemplo, uma fonte de dados HSQLDB embutida na memory para propósitos de demonstração)?

se não houver um caminho padrão, outros contêineres aceitarão pelo menos o caminho do jboss? (/deploy/*-ds.xml)

Existe uma maneira padrão de definir uma origem de dados JDBC e implementá-la?

Sim existe. Isso é feito através do elemento , que você pode colocar em web.xml , ejb-jar.xml e application.xml . Se você não gosta de XML, você também pode usar uma anotação para isso: @DataSourceDefinition

Exemplo de uma input web.xml

  java:app/myDS org.postgresql.xa.PGXADataSource pg.myserver.com my_db foo bla true TRANSACTION_READ_COMMITTED 2 10 5 0  

Leitura adicional:

  • Introduzindo a anotação DataSourceDefinition
  • O estado de @DataSourceDefinition no Java EE
  • Aplicativo de exemplo usa fonte de dados padrão

Estou surpreso por todas as outras respostas dizerem que isso não existe, embora claramente, mesmo no momento em que essa pergunta foi originalmente feita.

Existe uma maneira padrão de definir uma origem de dados JDBC e implementá-la?

Não, isso é específico do contêiner. Como provedor de componentes de aplicativos , você deve documentar os resources necessários e o implantador de aplicativos e o administrador os configurará.

Se não houver um modo padrão, outros contêineres aceitarão pelo menos o caminho do JBoss?

Não, porque este é o caminho do JBoss e, portanto, específico do JBoss.

  • Com o Tomcat, você teria que usar o arquivo context.xml .
  • Com Jetty, jetty-env.xml .
  • Com o WebSphere, você pode criar um chamado WebSphere Enhanced EAR .
  • Com o WebLogic, você pode empacotar um Módulo JDBC em seu aplicativo.
  • Com o GlassFish, você pode usar o comando asadmin add-resources my.xml para adicionar uma fonte de dados descrita em um arquivo XML (exemplo aqui ).
  • Etc etc.

Note que existem alguns projetos tentando alcançar este objective de uma maneira universal, como jndi-resources ou Cargo . Há também uma solução mais complexa, como ControlTier ou Chef .

Agora, no seu caso (como eu entendi que você quer usar um database embutido que será empacotado com o seu aplicativo), eu não acho que você deve configurar uma fonte de dados no nível do servidor de aplicativos. Você deve apenas empacotar o jar do seu database em seu aplicativo com um conjunto de conexões independente, como c3p0 ou DBCP.

A filosofia Java EE da Sun define várias funções no design, desenvolvimento e implementação de um aplicativo corporativo. O design do Java EE acomoda e reflete essas separações de interesses.

Em particular, a Sun quer separar o desenvolvedor do administrador de um aplicativo, o que é uma boa ideia. O desenvolvedor grava componentes corporativos de maneira independente de contêiner. No web.xml, por exemplo, você declara seus DataSources de maneira padrão:

  jdbc/myDB javax.sql.DataSource Container  

Isso diz “este database que o aplicativo precisa, torne-o disponível para mim, seja qual for o database e o contêiner em que você estiver executando, por meio do JNDI padrão em ‘jdbc / myDB'”. Isso é tanto quanto o desenvolvedor pode fazer – o restante é necessariamente específico do contêiner e, portanto, não é padronizado.

E então, como o “myDB” está configurado, ele tem uma function diferente, o administrador do contêiner.

Então estou repetindo a resposta correta acima: não. Mas a razão é, caso contrário, você estaria codificando seu aplicativo para um tipo específico de database em um host e porta específicos, e o ponto é que você não deveria ser capaz de fazer isso, então não há suporte padrão para isso em propósito.

    Intereting Posts