No Jetty é possível configurar datasource com o banco de dados de várias formas. Aqui nesse post, vou descrever os passos para realizar a configuração do datasource do MySQL no Jetty, e como acessá-lo via JPA/Hibernate.
Uma boa prática é utilizar um pooling de conexões com o banco de dados na definição de datasources, otimizando o consumo de memória e velocidade de requisições com o banco. Por isso vou utilizar um plugin c3p0 com Jetty na configuração do datasource.
A estratégia é adicionar um novo arquivo de configuração, xml, na pasta WEB-INF do projeto web. O nome do arquivo com a configuração do datasource é jetty-env.xml. Veja o exemplo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <? xml version = "1.0" encoding = "UTF-8" ?> <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" < Configure id = "wac" class = "org.eclipse.jetty.webapp.WebAppContext" > <!-- MySQL DataSource --> < New id = "MysqlDS" class = "org.eclipse.jetty.plus.jndi.Resource" > < Arg ></ Arg > < Arg >jdbc/MysqlDS</ Arg > < Arg > < New class = "com.mchange.v2.c3p0.ComboPooledDataSource" > < Set name = "driverClass" >com.mysql.jdbc.Driver</ Set > < Set name = "user" >root</ Set > <!-- usuario do banco de dados --> < Set name = "password" >root</ Set > <!-- senha do banco de dados --> </ New > </ Arg > </ New > </ Configure > |
Note que que no jetty-env.xml defino o JNDI name jdbc/MySQL, configure as as credenciais e a url jdbc de acordo com sua instalação mySQL. Agora é necessário fazer a busca do datasource pelo JNDI name configurado, a seguir o exemplo de como fazer em isso em JPA, no arquivo persistence.xml (JPA):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <? xml version = "1.0" encoding = "UTF-8" standalone = "no" ?> xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" > < persistence-unit name = "estoqueUnit" transaction-type = "RESOURCE_LOCAL" > < provider >org.hibernate.ejb.HibernatePersistence</ provider > < non-jta-data-source >jdbc/MysqlDS</ non-jta-data-source > < properties > <!-- configurações do Hibernate --> < property name = "hibernate.hbm2ddl.auto" value = "create-drop" /> < property name = "hibernate.show_sql" value = "true" /> < property name = "hibernate.format_sql" value = "true" /> < property name = "hibernate.dialect" value = "org.hibernate.dialect.MySQLDialect" /> </ properties > </ persistence-unit > </ persistence > |
Um detalhe importante, é necessário garantir os jars do driver JDBC MySQL e c3p0 na distribuição do projeto web (WEB-INF/lib). No Maven basta apenas adicionar as duas dependências no pom.xml, como a seguir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ... < dependencies > ... <!-- MySQL JDBC --> < dependency > < groupId >mysql</ groupId > < artifactId >mysql-connector-java</ artifactId > < version >5.1.25</ version > </ dependency > <!-- C3p0 --> < dependency > < groupId >c3p0</ groupId > < artifactId >c3p0</ artifactId > < version >0.9.1.2</ version > </ dependency > ... </ dependencies > ... </ project > |
Mais detalhes na documentação do Jetty.
http://twitter.com/edermag
http://www.yaw.com.br
No comments:
Post a Comment