Datasource no Jetty

Olá pessoal!

Estou com um problema para configurar o datasource no Jetty, abaixo segue as configs…

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="PUSACCTB" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <non-jta-data-source>java:comp/env/jdbc/SACCTBDS</non-jta-data-source>
        <class>......</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
            <property name="hibernate.connection.lc_ctype" value="ISO8859_1"/>
            <property name="hibernate.default_schema" value="public"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="use_sql_comments" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

web.xml

    <resource-ref>
        <description>SACCTB Data Source</description>
        <res-ref-name>jdbc/SACCTBDS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>

context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/SACCTB" reloadable="true" debug="0">
    <Resource name="jdbc/SACCTBDS"
              auth="Container"
              type="javax.sql.DataSource"
              maxActive="100"
              maxIdle="20"
              maxWait="5000"
              username="***"
              password="***"
              driverClassName="org.postgresql.Driver"
              url="jdbc:postgresql://localhost:5432/SACCTB">
    </Resource>
</Context>

<Configure id='SACCTB' class="org.mortbay.jetty.webapp.WebAppContext">
   <New id="SACCTBDS" class="org.mortbay.jetty.plus.naming.Resource">
      <Arg></Arg>
      <Arg>jdbc/SACCTBDS</Arg>
      <Arg>
         <New class="org.postgresql.ds.PGSimpleDataSource">
                 <Set name="User">***</Set>
                 <Set name="Password">***</Set>
                 <Set name="DatabaseName">SACCTB</Set>
                 <Set name="ServerName">localhost</Set>
                 <Set name="PortNumber">5432</Set>
         </New>
      </Arg>
   </New>
</Configure>

Acima esta o datasource que utilizo no tomcat e funciona sem problemas agora no jetty lança a excetion:

Caused by: javax.naming.NameNotFoundException; remaining name 'env/jdbc/SACCTBDS'
        at org.mortbay.naming.NamingContext.lookup(NamingContext.java:634)
        at org.mortbay.naming.NamingContext.lookup(NamingContext.java:665)
        at org.mortbay.naming.NamingContext.lookup(NamingContext.java:680)
        at org.mortbay.naming.java.javaRootURLContext.lookup(javaRootURLContext.java:112)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)

Alguem fez algo parecido no Jetty utilizando JPA(Hibernate) com datasorce e deu certo poste por favor :lol:

Desde já muito obrigado.

Olá!

Estou enfrentando o mesmo problema com um Banco Firebird. Você conseguiu resolver?

Obrigado,

Adriano

Olá, boa tarde!

Consegui sim, depois de muito procurar na documentação do Jetty acabei encontrando, fiz quase tudo certo só faltava mesmo habilitar nas configurações umas coisas e configurar o contexto que é diferente do tomcat.
Segue abaixo como fiz:

Habilitar no jetty.xml o JNDI:
procure as seguintes configurações:

<Call name="addLifeCycle">
  <Arg>
    <New class="org.mortbay.jetty.deployer.WebAppDeployer">
      <Set name="contexts"><Ref id="Contexts"/></Set>
      <Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set>
      <Set name="parentLoaderPriority">false</Set>
      <Set name="extract">true</Set>
      <Set name="allowDuplicates">false</Set>
      <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
    </New>
  </Arg>
</Call>

modifique para:

	<Array id="plusConfig" type="java.lang.String">
	  <Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
	  <Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
	  <Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
	  <Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
	  <Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item>
	</Array>

    <Call name="addLifeCycle">
      <Arg>
        <New class="org.mortbay.jetty.deployer.WebAppDeployer">
          <Set name="contexts"><Ref id="Contexts"/></Set>
          <Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set>
		  <Set name="parentLoaderPriority">false</Set>
		  <Set name="extract">true</Set>
		  <Set name="allowDuplicates">false</Set>
          <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
		  <Set name="configurationClasses"><Ref id="plusConfig"/></Set>
        </New>
      </Arg>
    </Call>

A única coisa que muda é o array antes e essa linha dentro do call <Set name=“configurationClasses”><Ref id=“plusConfig”/></Set>. Tem também o aquivo jetty-plus.xml que já tem essas configurações mas tem que descomentar mudar a pasta de onde esta a aplicação e tal ou fazer um arquivo de contexto e colocar na pasta contexts, bom deixando isso pra depois :smiley: basta configurar o datasource igual ao que criei acima só que no tomcat fica no context.xml (META-INF) no jetty é jetty-env.xml (WEB-INF).

jetty-env.xml

&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"&gt;

 &lt;Configure id='SACCTB' class="org.mortbay.jetty.webapp.WebAppContext"&gt;  
    &lt;New id="SACCTBDS" class="org.mortbay.jetty.plus.naming.Resource"&gt;  
       &lt;Arg&gt;&lt;/Arg&gt;  
       &lt;Arg&gt;jdbc/SACCTBDS&lt;/Arg&gt;  
       &lt;Arg&gt;  
          &lt;New class="org.postgresql.ds.PGSimpleDataSource"&gt;  
                  &lt;Set name="User"&gt;***&lt;/Set&gt;  
                  &lt;Set name="Password"&gt;***&lt;/Set&gt;  
                  &lt;Set name="DatabaseName"&gt;SACCTB&lt;/Set&gt;  
                  &lt;Set name="ServerName"&gt;localhost&lt;/Set&gt;  
                  &lt;Set name="PortNumber"&gt;5432&lt;/Set&gt;  
          &lt;/New&gt;  
       &lt;/Arg&gt;  
    &lt;/New&gt;  
 &lt;/Configure&gt; 

Pronto é só startar :smiley:
Links:
http://docs.codehaus.org/display/JETTY/JNDI
http://docs.codehaus.org/display/BTM/Jetty13
aqui tem uns exemplos: http://docs.codehaus.org/display/JETTY/DataSource+Examples

espero ter ajudado-o, abraços!

to pegando nullpointerexception para o entitymanager. Pode dar u help colega?

Olá!

Poste seu codigo aqui assim fica mais fácil de ver onde esta o problema!

Até!

Bom estou usando o Jersey que é um framework Restful webservices, e preciso integrar meu projeto com Jetty + Maven + Hibernate/JPA

Segue meu código:

@Path("/myresource")
public class MyResource {
    
//	@PersistenceUnit(name = "ctsp-jpa")
//	private EntityManagerFactory emf;

	@PersistenceContext(unitName = "ctsp-jpa")
	private EntityManager em;
    /** Method processing HTTP GET requests, producing "text/plain" MIME media
     * type.
     * @return String that will be send back as a response of type "text/plain".
     * @throws NamingException 
     */
    @GET 
    @Produces("text/plain")
    public String getIt() throws RuntimeException {  


//    	         EntityManager em = emf.createEntityManager();
               // O Null Pointer Exception está dando nessa linha abaixo
		Query query = em.createQuery("select c from Country c where c.id = :id");
		query.setParameter("id", 1);
		List<?> results = query.getResultList();
		
		Iterator<?> it = results.iterator();
		Country c = null;
		if(it.hasNext()){
			c = (Country) it.next();
		}
				

		
		return "Hello there";
       
    }

Agora meus arquivos de configuração:

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for dev profile -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
             version="1.0">
       
       
    <persistence-unit name="ctsp-jpa">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <non-jta-data-source>java:comp/env/jdbc/citespace-jpaDatasource</non-jta-data-source> 
      <!--   <jta-data-source>java:/citespace-jpaDatasource</jta-data-source>-->
      <!-- The <jar-file> element is necessary if you put the persistence.xml in the WAR and the classes in the JAR -->
      <!--
      <jar-file>../../vehicles.jar</jar-file>
      -->
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="update"/>
         <property name="hibernate.show_sql" value="true"/>
         <property name="hibernate.format_sql" value="true"/>         
         <property name="hibernate.connection.characterEncoding" value="UTF-8"/>
        <!-- <property name="hibernate.connection.url" value="jdbc:mysql://localhost/citespace_article"/>
		 <property name="hibernate.connection.username" value="user"/>
		 <property name="hibernate.connection.password" value="password"/>
		 <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>-->
		 <!-- <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"/>-->
      </properties>
      
   </persistence-unit>         
       
</persistence>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>org.citespace.rest.api</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/webresources/*</url-pattern>
    </servlet-mapping>  
    <resource-ref>
	    <description>MySQL DataSource</description>
	    <res-ref-name>jdbc/citespace-jpaDatasource</res-ref-name>
	    <res-type>javax.sql.DataSource</res-type>
	    <res-auth>Container</res-auth>
	</resource-ref>
          
</web-app>

jetty-env.xml

<?xml version="1.0"?>  
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">  
     
 
  <Configure id='citespace-jpaDatasource' class="org.mortbay.jetty.webapp.WebAppContext"> 
       <New id="citespace-jpaDatasource" class="org.mortbay.jetty.plus.naming.Resource">    
          <Arg></Arg>    
          <Arg>jdbc/citespace-jpaDatasource</Arg>    
          <Arg>    
             <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">    
                     <Set name="Url">jdbc:mysql://localhost:3306/database</Set>
                     <Set name="User">user</Set>    
                     <Set name="Password">password</Set>    
                    <!-- <Set name="DatabaseName">database</Set>    
                     <Set name="ServerName">localhost</Set>    
                     <Set name="PortNumber">3306</Set>    -->
             </New>    
          </Arg>    
       </New>    
  </Configure>  

Olá!

Nesta linha deve especificar o nome do contexto da sua app não o nome do DS…

&lt;Configure id='citespace-jpaDatasource' class="org.mortbay.jetty.webapp.WebAppContext"&gt;

Outra coisa você modificou jetty.xml (caso esteja subindo o jetty com a config default) ou o arquivo de configuração que usa pra subir para habilitar o JNDI? Para habilitar veja mais acima no tópico como fazer…

Tire a injeção do EntityManager e faça na mão pegando o EM pela factory Persistence.createEntityManagerFactory(“seu_unit_name”) e veja se da certo…

Até

cara o jetty.xml está na webapps META-INF mas não sei se ele ta usando esse ou o padra do plugin como faço para saber? E qual contexto que devo colocar? Se for o padrão qual será?

Eu tenho o context.xml e o jetty.xml mas como faço para saber se ta usando ele ou do plugin ao Run as do build do Jetty no Maven?

jetty-env.xml

<?xml version="1.0"?>  
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">  
     
 
  <Configure id='citespace-jpa' class="org.mortbay.jetty.webapp.WebAppContext"> 
       <New id="citespace-jpaDatasource" class="org.mortbay.jetty.plus.naming.Resource">    
          <Arg></Arg>    
          <Arg>jdbc/citespace-jpaDatasource</Arg>    
          <Arg>    
             <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">    
                     <Set name="Url">jdbc:mysql://localhost:3306/citespace_article</Set>
                     <Set name="User">root</Set>    
                     <Set name="Password">spacecite</Set>    
                    <!-- <Set name="DatabaseName">citespace_article</Set>    
                     <Set name="ServerName">localhost</Set>    
                     <Set name="PortNumber">3306</Set>    -->
             </New>    
          </Arg>    
       </New>    
  </Configure>  

classe java


	@PersistenceUnit(name = "ctsp-jpa")
	private EntityManagerFactory emf;

//	@PersistenceContext(unitName = "ctsp-jpa")
//	private EntityManager em;
    /** Method processing HTTP GET requests, producing "text/plain" MIME media
     * type.
     * @return String that will be send back as a response of type "text/plain".
     * @throws NamingException 
     */
    @GET 
    @Produces("text/plain")
    public String getIt() throws RuntimeException {  


    	EntityManager em = emf.createEntityManager();
		Query query = em.createQuery("select c from Country c where c.id = :id");
		query.setParameter("id", 1);
		List<?> results = query.getResultList();
		
		Iterator<?> it = results.iterator();
		Country c = null;
		if(it.hasNext()){
			c = (Country) it.next();
		}
				
//		return "NOME: "+c.getName();
		
		return "Hello there";
       
    }

o web.xml e persistence.xml continuam o mesm o contexto coloquei um nome da minha cabeça, ou tem q ser baseado em algo?

Quando sobe o jetty assim java -jar start.jar ele utiliza o jetty.xml que fica em $JETTY_HOME/etc/, é neste arquivo que deve modificar para habilitar o JNDI, é so setar algumas configurações que esta neste tópico…
Outra coisa o jetty.xml não é pra ficar dentro de META-INF, e o jetty-env.xml deve ficar em WEB-INF, este arquivo neste diretorio é o que configura os resources JNDI para sua app.
Sobre coloca o nome do context não influencia muito não mas troca só para a identificação do contexto não ficar igual ao do datasource. (o nome do contexto é o nome de sua app exemplo: http://localhost:8080/NOMECONTEXTO).

&lt;Configure id="NOMECONTEXTO" class="org.mortbay.jetty.webapp.WebAppContext"&gt;

E faz como te falei acima, tira a injeção do EnityManager e faz “na mão” pegando pela factory.

Até

EDIT: Esqueci que esta usando o Maven, mas tanto faz ele utiliza o jetty.xml quando sobe com mvn jetty:run

vou trocar amanha, estou em casa agora e te respondo amanha para ver o q houve, sobre o jetty.xml nao tenho como ter acesso ao JETTY_HOME/etc uma vez que rodo pelo maven o jetty ou seja nao tenho jetty em minha maquina é apenas um plugin

cara ainda estou pegando null pointer exception e agora é nessa parte aqui

    	EntityManager em = emf.createEntityManager(); 

	@PersistenceUnit(name = "ctsp-jpa")
	private EntityManagerFactory emf;

    /** Method processing HTTP GET requests, producing "text/plain" MIME media
     * type.
     * @return String that will be send back as a response of type "text/plain".
     * @throws NamingException 
     */
    @GET 
    @Produces("text/plain")
    public String getIt() throws RuntimeException {  


    	   EntityManager em = emf.createEntityManager();
		Query query = em.createQuery("select c from Country c where c.id = :id");
		query.setParameter("id", 1);
		List<?> results = query.getResultList();
		
		Iterator<?> it = results.iterator();
		Country c = null;
		if(it.hasNext()){
			c = (Country) it.next();
		}
				
		
		return "Hello there";
       
    }

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>org.citespace.rest.api</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/webresources/*</url-pattern>
    </servlet-mapping>  
    <resource-ref>
	    <description>MySQL DataSource</description>
	    <res-ref-name>jdbc/citespace-jpaDatasource</res-ref-name>
	    <res-type>javax.sql.DataSource</res-type>
	    <res-auth>Container</res-auth>
	</resource-ref>
          
</web-app>

persistence.xml


<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for dev profile -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
             version="1.0">
       
       
    <persistence-unit name="ctsp-jpa">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <non-jta-data-source>java:comp/env/jdbc/citespace-jpaDatasource</non-jta-data-source> 
      <!--   <jta-data-source>java:/citespace-jpaDatasource</jta-data-source>-->
      <!-- The <jar-file> element is necessary if you put the persistence.xml in the WAR and the classes in the JAR -->
      <!--
      <jar-file>../../vehicles.jar</jar-file>
      -->
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="update"/>
         <property name="hibernate.show_sql" value="true"/>
         <property name="hibernate.format_sql" value="true"/>         
         <property name="hibernate.connection.characterEncoding" value="UTF-8"/>
        <!-- <property name="hibernate.connection.url" value="jdbc:mysql://localhost/citespace_article"/>
		 <property name="hibernate.connection.username" value="****"/>
		 <property name="hibernate.connection.password" value="****"/>
		 <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>-->
		 <!-- <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"/>-->
      </properties>
      
   </persistence-unit>         
    
    

jetty-env.xml

<?xml version="1.0"?>  
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">  
     
 
  <Configure id='citespace-rest-api' class="org.mortbay.jetty.webapp.WebAppContext"> 
       <New id="citespace-jpaDatasource" class="org.mortbay.jetty.plus.naming.Resource">    
          <Arg></Arg>    
          <Arg>jdbc/citespace-jpaDatasource</Arg>    
          <Arg>    
             <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">    
                     <Set name="Url">jdbc:mysql://localhost:3306/citespace_article</Set>
                     <Set name="User">****</Set>    
                     <Set name="Password">***</Set>    
                    <!-- <Set name="DatabaseName">citespace_article</Set>    
                     <Set name="ServerName">localhost</Set>    
                     <Set name="PortNumber">3306</Set>    -->
             </New>    
          </Arg>    
       </New>    
  </Configure>  

[quote=roanbrasil]cara ainda estou pegando null pointer exception e agora é nessa parte aqui

    	EntityManager em = emf.createEntityManager(); 

	@PersistenceUnit(name = "ctsp-jpa")
	private EntityManagerFactory emf;

    /** Method processing HTTP GET requests, producing "text/plain" MIME media
     * type.
     * @return String that will be send back as a response of type "text/plain".
     * @throws NamingException 
     */
    @GET 
    @Produces("text/plain")
    public String getIt() throws RuntimeException {  


    	   EntityManager em = emf.createEntityManager();
		Query query = em.createQuery("select c from Country c where c.id = :id");
		query.setParameter("id", 1);
		List<?> results = query.getResultList();
		
		Iterator<?> it = results.iterator();
		Country c = null;
		if(it.hasNext()){
			c = (Country) it.next();
		}
				
		
		return "Hello there";
       
    }

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>org.citespace.rest.api</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/webresources/*</url-pattern>
    </servlet-mapping>  
    <resource-ref>
	    <description>MySQL DataSource</description>
	    <res-ref-name>jdbc/citespace-jpaDatasource</res-ref-name>
	    <res-type>javax.sql.DataSource</res-type>
	    <res-auth>Container</res-auth>
	</resource-ref>
          
</web-app>

persistence.xml


<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for dev profile -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
             version="1.0">
       
       
    <persistence-unit name="ctsp-jpa">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <non-jta-data-source>java:comp/env/jdbc/citespace-jpaDatasource</non-jta-data-source> 
      <!--   <jta-data-source>java:/citespace-jpaDatasource</jta-data-source>-->
      <!-- The <jar-file> element is necessary if you put the persistence.xml in the WAR and the classes in the JAR -->
      <!--
      <jar-file>../../vehicles.jar</jar-file>
      -->
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="update"/>
         <property name="hibernate.show_sql" value="true"/>
         <property name="hibernate.format_sql" value="true"/>         
         <property name="hibernate.connection.characterEncoding" value="UTF-8"/>
        <!-- <property name="hibernate.connection.url" value="jdbc:mysql://localhost/citespace_article"/>
		 <property name="hibernate.connection.username" value="****"/>
		 <property name="hibernate.connection.password" value="****"/>
		 <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>-->
		 <!-- <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"/>-->
      </properties>
      
   </persistence-unit>         
    
    

jetty-env.xml

[code]

<?xml version="1.0"?> jdbc/citespace-jpaDatasource jdbc:mysql://localhost:3306/citespace_article **** ***

[/code][/quote]

[quote=roanbrasil]cara ainda estou pegando null pointer exception e agora é nessa parte aqui

    	EntityManager em = emf.createEntityManager(); 

	@PersistenceUnit(name = "ctsp-jpa")
	private EntityManagerFactory emf;

    /** Method processing HTTP GET requests, producing "text/plain" MIME media
     * type.
     * @return String that will be send back as a response of type "text/plain".
     * @throws NamingException 
     */
    @GET 
    @Produces("text/plain")
    public String getIt() throws RuntimeException {  


    	   EntityManager em = emf.createEntityManager();
		Query query = em.createQuery("select c from Country c where c.id = :id");
		query.setParameter("id", 1);
		List<?> results = query.getResultList();
		
		Iterator<?> it = results.iterator();
		Country c = null;
		if(it.hasNext()){
			c = (Country) it.next();
		}
				
		
		return "Hello there";
       
    }

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>org.citespace.rest.api</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/webresources/*</url-pattern>
    </servlet-mapping>  
    <resource-ref>
	    <description>MySQL DataSource</description>
	    <res-ref-name>jdbc/citespace-jpaDatasource</res-ref-name>
	    <res-type>javax.sql.DataSource</res-type>
	    <res-auth>Container</res-auth>
	</resource-ref>
          
</web-app>

persistence.xml


<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for dev profile -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
             version="1.0">
       
       
    <persistence-unit name="ctsp-jpa">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <non-jta-data-source>java:comp/env/jdbc/citespace-jpaDatasource</non-jta-data-source> 
      <!--   <jta-data-source>java:/citespace-jpaDatasource</jta-data-source>-->
      <!-- The <jar-file> element is necessary if you put the persistence.xml in the WAR and the classes in the JAR -->
      <!--
      <jar-file>../../vehicles.jar</jar-file>
      -->
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="update"/>
         <property name="hibernate.show_sql" value="true"/>
         <property name="hibernate.format_sql" value="true"/>         
         <property name="hibernate.connection.characterEncoding" value="UTF-8"/>
        <!-- <property name="hibernate.connection.url" value="jdbc:mysql://localhost/citespace_article"/>
		 <property name="hibernate.connection.username" value="****"/>
		 <property name="hibernate.connection.password" value="****"/>
		 <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>-->
		 <!-- <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"/>-->
      </properties>
      
   </persistence-unit>         
    
    

jetty-env.xml

[code]

<?xml version="1.0"?> jdbc/citespace-jpaDatasource jdbc:mysql://localhost:3306/citespace_article **** ***

[/code][/quote]

Boa tarde!!!

Galera, alguém conseguiu ou já passou pela situação acima?
Estou com o mesmo problema, sendo que, a unica coisa que muda é que estou usando JPA (eclipse link) como persistência, Jersey e Glassfish V3
Quando coloco o annotation @PersistenceUnit no EntityManagerFactory como acima o mesmo sempre vem null.
Segue abaixo meu web.xml.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>ServletAdaptor</servlet-name>
        <servlet-class>com.sun.jersey.server.impl.container.servlet.ServletAdaptor</servlet-class>
        
        <init-param>
            <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
            <param-value>br.com.grupocriar.scp.ScpRequestFilter</param-value>
        </init-param>
        
        <init-param>
            <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
            <param-value>br.com.grupocriar.scp.ScpRequestFilter</param-value>
        </init-param>
        
        <init-param>
            <param-name>com.sun.jersey.config.feature.Redirect</param-name>
            <param-value>true</param-value>
        </init-param>
        
        <init-param>
            <param-name>unit:scpPU</param-name>
            <param-value>persistence</param-value>
        </init-param>
        
        <load-on-startup>1</load-on-startup>
        
    </servlet>
    
    <servlet-mapping>
        <servlet-name>ServletAdaptor</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    
    <persistence-unit-ref>
        <persistence-unit-ref-name>persistence</persistence-unit-ref-name>
        <persistence-unit-name>scpPU</persistence-unit-name>
    </persistence-unit-ref>
    
    <resource-ref>
        <res-ref-name>UserTransaction</res-ref-name>
        <res-type>javax.transaction.UserTransaction</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    
    <persistence-context-ref>
        <persistence-context-ref-name>persistence</persistence-context-ref-name>
        <persistence-unit-name>scpPU</persistence-unit-name>
    </persistence-context-ref>
    
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

E uma classe que criei para testar

package br.com.grupocriar.scp.codigos.controller;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceUnit;
import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/defaultContext")
public class DefaultContext {

    @PersistenceUnit(unitName="scpPU")
    protected EntityManagerFactory emf;
    protected  EntityManager em;

    public DefaultContext() {
        try {
            em = emf.createEntityManager();
            em.isOpen();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
   
   @GET
   public String get() {
      return "Teste";
   }
}