Author: dain
Date: Mon Sep 24 13:02:06 2007
New Revision: 578939
URL: http://svn.apache.org/viewvc?rev=578939&view=rev
Log:
Fixed persistence units in Tomcat plugin
Aded persistence unit example to ejb-examples.war
Added:
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaBean.java
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaServlet.java
openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/
openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/persistence.xml
Modified:
openejb/trunk/openejb3/assembly/openejb-tomcat/maven.xml
openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatWebAppBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
openejb/trunk/openejb3/examples/ejb-examples/src/main/webapp/WEB-INF/web.xml
Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/maven.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/maven.xml?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/maven.xml (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/maven.xml Mon Sep 24
13:02:06 2007
@@ -208,7 +208,7 @@
<goal name="setup:ejb-examples">
<mkdir dir="${tomcat.home}/webapps/ejb-examples"/>
- <unjar
src="${user.home}/.m2/repository/org/apache/openejb/servlet-samples/1.0-SNAPSHOT/servlet-samples-1.0-SNAPSHOT.war"
dest="${tomcat.home}/webapps/ejb-examples"/>
+ <unjar
src="${user.home}/.m2/repository/org/apache/openejb/ejb-examples/1.0-SNAPSHOT/ejb-examples-1.0-SNAPSHOT.war"
dest="${tomcat.home}/webapps/ejb-examples"/>
</goal>
<!--======================-->
@@ -219,7 +219,7 @@
<attainGoal name="tomcat6"/>
<attainGoal name="setup:tomcat"/>
<attainGoal name="setup:loader-webapp"/>
- <attainGoal name="setup:itests-war"/>
+ <!--<attainGoal name="setup:itests-war"/>-->
<attainGoal name="setup:ejb-examples"/>
<attainGoal name="start:tomcat"/>
</goal>
@@ -228,7 +228,7 @@
<attainGoal name="tomcat6"/>
<attainGoal name="setup:tomcat"/>
<attainGoal name="setup:loader-webapp"/>
- <attainGoal name="setup:itests-war"/>
+ <!--<attainGoal name="setup:itests-war"/>-->
<attainGoal name="setup:ejb-examples"/>
<attainGoal name="start:tomcat-debug"/>
</goal>
Modified:
openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatWebAppBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatWebAppBuilder.java?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
---
openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatWebAppBuilder.java
(original)
+++
openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatWebAppBuilder.java
Mon Sep 24 13:02:06 2007
@@ -30,6 +30,7 @@
import org.apache.openejb.assembler.classic.JndiEncBuilder;
import org.apache.openejb.assembler.classic.WebAppBuilder;
import org.apache.openejb.assembler.classic.WebAppInfo;
+import org.apache.openejb.assembler.classic.LinkResolver;
import org.apache.openejb.config.AppModule;
import org.apache.openejb.config.ConfigurationFactory;
import org.apache.openejb.config.DeploymentLoader;
@@ -48,6 +49,7 @@
import javax.naming.Context;
import javax.naming.NamingException;
import javax.servlet.ServletContext;
+import javax.persistence.EntityManagerFactory;
import java.io.File;
import java.io.IOException;
import java.net.URL;
@@ -95,11 +97,11 @@
// OpenEJB WebAppBuilder
//
- public void deploy(WebAppInfo webAppInfo) throws Exception {
+ public void deploy(WebAppInfo webAppInfo,
LinkResolver<EntityManagerFactory> emfLinkResolver) throws Exception {
StandardContext standardContext =
getContextInfo(webAppInfo.moduleId).standardContext;
if (standardContext != null) {
- JndiEncBuilder jndiEncBuilder = new
JndiEncBuilder(webAppInfo.jndiEnc, webAppInfo.moduleId);
+ JndiEncBuilder jndiEncBuilder = new
JndiEncBuilder(webAppInfo.jndiEnc, "Bean", emfLinkResolver,
webAppInfo.moduleId);
jndiEncBuilder.setUseCrossClassLoaderRef(false);
Context enc = (Context) jndiEncBuilder.build().lookup("env");
bindEnc(standardContext, enc);
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
Mon Sep 24 13:02:06 2007
@@ -542,7 +542,7 @@
WebAppBuilder webAppBuilder =
SystemInstance.get().getComponent(WebAppBuilder.class);
if (webAppBuilder != null) {
for (WebAppInfo webAppInfo : appInfo.webApps) {
- webAppBuilder.deploy(webAppInfo);
+ webAppBuilder.deploy(webAppInfo, emfLinkResolver);
}
}
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
Mon Sep 24 13:02:06 2007
@@ -272,39 +272,41 @@
}
}
- for (PersistenceUnitReferenceInfo referenceInfo :
jndiEnc.persistenceUnitRefs) {
- if (referenceInfo.location != null){
- Reference reference =
buildReferenceLocation(referenceInfo.location);
+ if (emfLinkResolver != null) {
+ for (PersistenceUnitReferenceInfo referenceInfo :
jndiEnc.persistenceUnitRefs) {
+ if (referenceInfo.location != null){
+ Reference reference =
buildReferenceLocation(referenceInfo.location);
+ bindings.put(normalize(referenceInfo.referenceName),
reference);
+ continue;
+ }
+
+ EntityManagerFactory factory =
emfLinkResolver.resolveLink(referenceInfo.persistenceUnitName, moduleUri);
+ if (factory == null) {
+ throw new IllegalArgumentException("Persistence unit " +
referenceInfo.persistenceUnitName + " for persistence-unit-ref " +
+ referenceInfo.referenceName + " not found");
+ }
+
+ Reference reference = new PersistenceUnitReference(factory);
bindings.put(normalize(referenceInfo.referenceName),
reference);
- continue;
}
- EntityManagerFactory factory =
emfLinkResolver.resolveLink(referenceInfo.persistenceUnitName, moduleUri);
- if (factory == null) {
- throw new IllegalArgumentException("Persistence unit " +
referenceInfo.persistenceUnitName + " for persistence-unit-ref " +
- referenceInfo.referenceName + " not found");
- }
+ for (PersistenceContextReferenceInfo contextInfo :
jndiEnc.persistenceContextRefs) {
+ if (contextInfo.location != null){
+ Reference reference =
buildReferenceLocation(contextInfo.location);
+ bindings.put(normalize(contextInfo.referenceName),
reference);
+ continue;
+ }
- Reference reference = new PersistenceUnitReference(factory);
- bindings.put(normalize(referenceInfo.referenceName), reference);
- }
+ EntityManagerFactory factory =
emfLinkResolver.resolveLink(contextInfo.persistenceUnitName, moduleUri);
+ if (factory == null) {
+ throw new IllegalArgumentException("Persistence unit " +
contextInfo.persistenceUnitName + " for persistence-context-ref " +
+ contextInfo.referenceName + " not found");
+ }
- for (PersistenceContextReferenceInfo contextInfo :
jndiEnc.persistenceContextRefs) {
- if (contextInfo.location != null){
- Reference reference =
buildReferenceLocation(contextInfo.location);
+ JtaEntityManager jtaEntityManager = new
JtaEntityManager(jtaEntityManagerRegistry, factory, contextInfo.properties,
contextInfo.extended);
+ Reference reference = new
PersistenceContextReference(jtaEntityManager);
bindings.put(normalize(contextInfo.referenceName), reference);
- continue;
}
-
- EntityManagerFactory factory =
emfLinkResolver.resolveLink(contextInfo.persistenceUnitName, moduleUri);
- if (factory == null) {
- throw new IllegalArgumentException("Persistence unit " +
contextInfo.persistenceUnitName + " for persistence-context-ref " +
- contextInfo.referenceName + " not found");
- }
-
- JtaEntityManager jtaEntityManager = new
JtaEntityManager(jtaEntityManagerRegistry, factory, contextInfo.properties,
contextInfo.extended);
- Reference reference = new
PersistenceContextReference(jtaEntityManager);
- bindings.put(normalize(contextInfo.referenceName), reference);
}
for (ServiceReferenceInfo referenceInfo : jndiEnc.serviceRefs) {
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
Mon Sep 24 13:02:06 2007
@@ -17,7 +17,9 @@
*/
package org.apache.openejb.assembler.classic;
+import javax.persistence.EntityManagerFactory;
+
public interface WebAppBuilder {
- void deploy(WebAppInfo webAppInfo) throws Exception;
+ void deploy(WebAppInfo webAppInfo, LinkResolver<EntityManagerFactory>
emfLinkResolver) throws Exception;
void undeploy(WebAppInfo webAppInfo) throws Exception;
}
Added:
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaBean.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaBean.java?rev=578939&view=auto
==============================================================================
---
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaBean.java
(added)
+++
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaBean.java
Mon Sep 24 13:02:06 2007
@@ -0,0 +1,52 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.examples.servlet;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Column;
+
[EMAIL PROTECTED]
+public class JpaBean {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private int id;
+
+ @Column(name = "name")
+ private String name;
+
+ public int getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ public String toString() {
+ return "[JpaBean id=" + id + ", name=" + name + "]";
+ }
+}
\ No newline at end of file
Added:
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaServlet.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaServlet.java?rev=578939&view=auto
==============================================================================
---
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaServlet.java
(added)
+++
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaServlet.java
Mon Sep 24 13:02:06 2007
@@ -0,0 +1,73 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.examples.servlet;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceUnit;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Query;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+public class JpaServlet extends HttpServlet {
+ @PersistenceUnit(name = "jpa-example")
+ private EntityManagerFactory emf;
+
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
+ response.setContentType("text/plain");
+ ServletOutputStream out = response.getOutputStream();
+
+ out.println("@PersistenceUnit=" + emf);
+
+ EntityManager em = emf.createEntityManager();
+ EntityTransaction transaction = em.getTransaction();
+ transaction.begin();
+
+ JpaBean jpaBean = new JpaBean();
+ jpaBean.setName("JpaBean");
+ em.persist(jpaBean);
+
+ transaction.commit();
+ transaction.begin();
+
+ Query query = em.createQuery("SELECT j FROM JpaBean j WHERE
j.name='JpaBean'");
+ jpaBean = (JpaBean) query.getSingleResult();
+ out.println("Loaded " + jpaBean);
+
+ em.remove(jpaBean);
+
+ transaction.commit();
+ transaction.begin();
+
+ query = em.createQuery("SELECT count(j) FROM JpaBean j WHERE
j.name='JpaBean'");
+ int count = ((Number) query.getSingleResult()).intValue();
+ if (count == 0) {
+ out.println("Removed " + jpaBean);
+ } else {
+ out.println("ERROR: unable to remove" + jpaBean);
+ }
+
+ transaction.commit();
+ }
+}
Added:
openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/persistence.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/persistence.xml?rev=578939&view=auto
==============================================================================
---
openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/persistence.xml
(added)
+++
openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/persistence.xml
Mon Sep 24 13:02:06 2007
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+ <persistence-unit transaction-type="RESOURCE_LOCAL" name="jpa-example">
+ <jta-data-source>java:openejb/Connector/Default JDBC
Database</jta-data-source>
+ <non-jta-data-source>java:openejb/Connector/Default Unmanaged JDBC
Database</non-jta-data-source>
+ <class>org.apache.openejb.examples.servlet.JpaBean</class>
+
+ <properties>
+ <property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(ForeignKeys=true)"/>
+ </properties>
+ </persistence-unit>
+</persistence>
\ No newline at end of file
Modified:
openejb/trunk/openejb3/examples/ejb-examples/src/main/webapp/WEB-INF/web.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/ejb-examples/src/main/webapp/WEB-INF/web.xml?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/ejb-examples/src/main/webapp/WEB-INF/web.xml
(original)
+++
openejb/trunk/openejb3/examples/ejb-examples/src/main/webapp/WEB-INF/web.xml
Mon Sep 24 13:02:06 2007
@@ -32,4 +32,14 @@
<servlet-name>AnnotatedServlet</servlet-name>
<url-pattern>/annotated/*</url-pattern>
</servlet-mapping>
+
+ <servlet>
+ <servlet-name>JpaServlet</servlet-name>
+
<servlet-class>org.apache.openejb.examples.servlet.JpaServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>JpaServlet</servlet-name>
+ <url-pattern>/jpa/*</url-pattern>
+ </servlet-mapping>
</web-app>