Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/Examples/JPA/OC4J Web Tutorial"
(→Create J2EE application) |
(→Publish EAR) |
||
Line 98: | Line 98: | ||
*Action> Start Server | *Action> Start Server | ||
− | + | *In your console window you will see two processes - one for the server and the second for the deploy target. | |
<pre> | <pre> | ||
Oracle OC4J SA Server 11.1.1.0.0 localhost [Generic Server] | Oracle OC4J SA Server 11.1.1.0.0 localhost [Generic Server] | ||
Line 106: | Line 106: | ||
</pre> | </pre> | ||
− | + | *If you click on the deploy target you will see the deploy logs... | |
<pre> | <pre> | ||
Buildfile: C:\eclipse34\plugins\org.eclipse.jst.server.generic.oc4j_1.5.105.v20071217\buildfiles\oracle.10.1.3.xml | Buildfile: C:\eclipse34\plugins\org.eclipse.jst.server.generic.oc4j_1.5.105.v20071217\buildfiles\oracle.10.1.3.xml | ||
Line 122: | Line 122: | ||
</pre> | </pre> | ||
− | + | *If you click on the server console you will see the predeploy weaving logs | |
<pre> | <pre> | ||
08/04/09 09:06:21 WARNING: Bulk-load class 'oracle.j2ee.naming.ldap.ucp.SASSLSocketFactory' not found in /C:/opt/oc4j11samba/j2ee/home/lib/oc4j-internal.jar (from <code-source> in META-INF/boot.xml in C:\opt\oc4j11samba\j2ee\home\oc4j.jar) | 08/04/09 09:06:21 WARNING: Bulk-load class 'oracle.j2ee.naming.ldap.ucp.SASSLSocketFactory' not found in /C:/opt/oc4j11samba/j2ee/home/lib/oc4j-internal.jar (from <code-source> in META-INF/boot.xml in C:\opt\oc4j11samba\j2ee\home\oc4j.jar) | ||
Line 154: | Line 154: | ||
08/04/09 09:06:41 Application Deployer for jpaELTestEAR COMPLETES. Operation time: 2155 msecs | 08/04/09 09:06:41 Application Deployer for jpaELTestEAR COMPLETES. Operation time: 2155 msecs | ||
</pre> | </pre> | ||
− | + | ===Perform an JPQL query=== | |
− | + | *At this time you can initialize your application in a browser - notice the use of the non-jta datasource | |
** launch http://127.0.0.1:8888/jpaELTest/FrontController?action=init | ** launch http://127.0.0.1:8888/jpaELTest/FrontController?action=init | ||
** This url command currently initializes the EntityManager | ** This url command currently initializes the EntityManager | ||
Line 163: | Line 163: | ||
</pre> | </pre> | ||
− | + | *Console Output> | |
<pre> | <pre> | ||
08/04/09 09:19:29 Action: init | 08/04/09 09:19:29 Action: init | ||
Line 183: | Line 183: | ||
[EPS Finest]: 2008.04.09 09:19:30.336--ServerSession(2059288)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--End deploying Persistence Unit statJPATopLinkJ2EE; state Deployed; factoryCount 2 | [EPS Finest]: 2008.04.09 09:19:30.336--ServerSession(2059288)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--End deploying Persistence Unit statJPATopLinkJ2EE; state Deployed; factoryCount 2 | ||
− | + | *Exercise your application in a browser by requesting a JPQL query | |
<pre> | <pre> | ||
http://127.0.0.1:8888/jpaELTest/FrontController?action=query&jpql=select%20object(e)%20from%20StatClass%20e%20where%20e.id<100 | http://127.0.0.1:8888/jpaELTest/FrontController?action=query&jpql=select%20object(e)%20from%20StatClass%20e%20where%20e.id<100 | ||
</pre> | </pre> | ||
− | + | *Browser Output | |
− | + | ||
<pre> | <pre> | ||
action: query | action: query |
Revision as of 15:54, 9 April 2008
Contents
EclipseLink JPA Deployed on OC4J using Eclipse WTP
Note: This page started on 20080409 is in edit progress for 72 hours until 20080412
This basic example details how to use Eclipse to run/debug a minimum J2EE web application servlet (No JSF or Spring presentation and controller layer) using EclipseLink JPA as the persistence provider.
Development Environment
Hardware: Windows Vista SP1, HP Core2Quad, 2.4Ghz, 3Gb Ram
Software: Eclipse 3.4 M5 Ganymede (Feb 2008) with all 5 WTP packages (DTP 1.6, EMF 2.4, GEF 3.4, WTP 3.0, XSD 2.4), Oracle 11g DB 11.1.0.6.0, Java JDK 1.5.0_11, OC4J 11.1.1.0.0 Preview 3
This example will run fine with Eclipse 3.3 and any DB that EclipseLink supports.
Prerequisites
- Install Eclipse
- I installed a clean version of Eclipse Ganymede M5 with all of WTP 3.0
- Install a Database
- In this example I am using Oracle 11g, the table schemas have already been created manually and all entitity java classes have been generated using the Eclipse DALI tool.
- Install OC4J11
- See the following Technology Preview 3
- Here I installed OC4J Standalone version to the following directory.
C:\opt\oc4j11samba Where OC4J_HOME=C:/opt/oc4j11samba/j2ee/home
OC4J Configuration Changes
- Edit oc4j11 config $OC4J_HOME/config/data-sources.xml and enter the following DataSource definition for JTA and non-JTA sources.
<managed-data-source name="OracleDS" connection-pool-name="local oracle11g" jndi-name="jdbc/OracleDS"/> <connection-pool name="local oracle11g"> <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="user" password="password" url="jdbc:oracle:thin:@//127.0.0.1:1521/orcl"> </connection-factory> </connection-pool>
EclipseLink JAR location
The eclipselink.jar should be placed as noted by config/server.xml in the directory $OC4J_HOME/applib
<!-- Global application libraries --> <shared-library name="global.libraries" version="1.0" library-compatible="true"> <code-source path="../applib"/> </shared-library>
Create server in Eclipse
Open the servers view New | Server | Oracle | Oracle OC4J Standalone Server 10.1.3.1 (it is ok to use this one for 11.1.1) I had to change my admin user from oc4jadmin to fmwadmin.
Create J2EE application
Check out the 3 example projects or create your own J2EE Enterprise Application. File | new | project | J2EE | Enterprise Application Project Select server, use 5.0 Ear version Create a new Web and an optional EJB project Select generate deployment descriptor if you want to change the context-root
- Path changes
<classpathentry combineaccessrules="false" kind="src" path="/eclipselink.core"/> <classpathentry combineaccessrules="false" kind="src" path="/eclipselink.jpa"/>
After EAR project creation - reference eclipselink.core and eclipselink.jpa or include a reference to eclipselink.jar in your WAR project.
- Persistence.xml
- Put persistence.xml in yourProjectWeb\src\META-INF
<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="statJPATopLinkJ2EE" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <non-jta-data-source>jdbc/OracleDS</non-jta-data-source> <class>org.eclipse.persistence.example.navigation.business.StatClass</class> … other entity classes <properties> <property name="eclipselink.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.oracle.OraclePlatform"/> <property name="eclipselink.logging.level" value="FINEST"/> </properties> </persistence-unit> </persistence>
Start Server
- Steps: Select the Ear (or the War) and Run on Server.
- The first run may not start the server, here you start the server and then Run on Server.
Publish EAR
- In the predeploy of the War you should see weaving messages for your entities if logs are set to FINEST in persistence.xml
- Depending on your application you will see the following...
- Action> Start Server
- In your console window you will see two processes - one for the server and the second for the deploy target.
Oracle OC4J SA Server 11.1.1.0.0 localhost [Generic Server] C:\jdk1.5.0\bin\javaw.exe (Apr 9, 2008 9:06:19 AM) <terminated>jpaELTestEAR module publisher [Ant Build] <terminated, exit value: 0>C:\jdk1.5.0\bin\javaw.exe (Apr 9, 2008 9:06:36 AM)
- If you click on the deploy target you will see the deploy logs...
Buildfile: C:\eclipse34\plugins\org.eclipse.jst.server.generic.oc4j_1.5.105.v20071217\buildfiles\oracle.10.1.3.xml check.skip.ear.deploy: deploy.j2ee.ear: package.module.ear: [jar] Building jar: C:\opt\oc4j11samba\j2ee\home\applications\jpaELTestEAR.ear [oracle:deploy] Deploying application jpaELTestEAR. [oracle:deploy] 08/04/09 09:06:39 Notification ==>Uploading file jpaELTestEAR.ear ... [oracle:deploy] 08/04/09 09:06:39 Notification ==>Application Deployer for jpaELTestEAR STARTS. ... [oracle:deploy] 08/04/09 09:06:41 Notification ==>Application Deployer for jpaELTestEAR COMPLETES. Operation time: 2155 msecs [oracle:deploy] Application deployer for jpaELTestEAR COMPLETES. BUILD SUCCESSFUL
- If you click on the server console you will see the predeploy weaving logs
08/04/09 09:06:21 WARNING: Bulk-load class 'oracle.j2ee.naming.ldap.ucp.SASSLSocketFactory' not found in /C:/opt/oc4j11samba/j2ee/home/lib/oc4j-internal.jar (from <code-source> in META-INF/boot.xml in C:\opt\oc4j11samba\j2ee\home\oc4j.jar) 08/04/09 09:06:21 WARNING: Bulk-load class 'oracle.security.idm.mad.ECIDProvider' not found in oc4j:11.1.1.0.0 Apr 9, 2008 9:06:23 AM oracle.j2ee.xml.XMLMessages warningException WARNING: Exception Encountered 08/04/09 09:06:25 JMS server will listen on port 9127. 08/04/09 09:06:26 oracle.j2ee.jms JMSServer startup complete. 08/04/09 09:06:26 SEVERE: AbstractInfo.getAnnotation oracle.webservices.annotations.async.AsyncWebService cannot be found in the given classpath. 08/04/09 09:06:26 SEVERE: AbstractInfo.getAnnotation oracle.webservices.annotations.async.AsyncWebService cannot be found in the given classpath. 08/04/09 09:06:27 Don't know how to map non-serializable type: interface javax.management.j2ee.statistics.Stats to Open MBean Type. 08/04/09 09:06:28 WARNING: J2EE JNDI-00002 08/04/09 09:06:28 WARNING: No javax.jms.ConnectionFactory found at null 08/04/09 09:06:29 Oracle Containers for J2EE 11g (11.1.1.0.0) initialized. 08/04/09 09:06:39 Application Deployer for jpaELTestEAR STARTS. ... 08/04/09 09:06:39 Started application : jpaELTestEAR 08/04/09 09:06:39 Binding jpaELTestWeb web-module for application jpaELTestEAR to site default-web-site under context root jpaELTest [EPS Finest]: 2008.04.09 09:06:39.893--ServerSession(23543153)--Thread(Thread[DeployerRunnable Thread for jpaELTestEAR,9,SystemThreadGroup])--Begin predeploying Persistence Unit statJPATopLinkJ2EE; state Initial; factoryCount 0 ... [EPS Finer]: 2008.04.09 09:06:39.924--ServerSession(23543153)--Thread(Thread[DeployerRunnable Thread for jpaELTestEAR,9,SystemThreadGroup])--Searching for default mapping file in file:/C:/opt/oc4j11samba/j2ee/home/applications/jpaELTestEAR/jpaELTestWeb/WEB-INF/classes/ [EPS Finer]: 2008.04.09 09:06:39.940--ServerSession(23543153)--Thread(Thread[DeployerRunnable Thread for jpaELTestEAR,9,SystemThreadGroup])--Found a default mapping file at file:/C:/opt/oc4j11samba/j2ee/home/applications/jpaELTestEAR/jpaELTestWeb/WEB-INF/classes/META-INF/orm.xml for root URL file:/C:/opt/oc4j11samba/j2ee/home/applications/jpaELTestEAR/jpaELTestWeb/WEB-INF/classes/ ... [EPS Finer]: 2008.04.09 09:06:40.783--ServerSession(23543153)--Thread(Thread[DeployerRunnable Thread for jpaELTestEAR,9,SystemThreadGroup])--Class [org.eclipse.persistence.example.navigation.business.StatClass] registered to be processed by weaver. ... [EPS Finest]: 2008.04.09 09:06:40.783--ServerSession(23543153)--Thread(Thread[DeployerRunnable Thread for jpaELTestEAR,9,SystemThreadGroup])--End predeploying Persistence Unit statJPATopLinkJ2EE; state Predeployed; factoryCount 1 [EPS Finest]: 2008.04.09 09:06:41.033--ServerSession(23543153)--Thread(Thread[DeployerRunnable Thread for jpaELTestEAR,9,SystemThreadGroup])--Begin weaver class transformer processing class [org/eclipse/persistence/example/navigation/business/StatClass]. [EPS Finest]: 2008.04.09 09:06:41.079--ServerSession(23543153)--Thread(Thread[DeployerRunnable Thread for jpaELTestEAR,9,SystemThreadGroup])--End weaver class transformer processing class [org/eclipse/persistence/example/navigation/business/StatClass]. ... 08/04/09 09:06:41 Binding web application(s) to site default-web-site ends... 08/04/09 09:06:41 Application Deployer for jpaELTestEAR COMPLETES. Operation time: 2155 msecs
Perform an JPQL query
- At this time you can initialize your application in a browser - notice the use of the non-jta datasource
- launch http://127.0.0.1:8888/jpaELTest/FrontController?action=init
- This url command currently initializes the EntityManager
emf = Persistence.createEntityManagerFactory(puName); entityManager = emf.createEntityManager();
- Console Output>
08/04/09 09:19:29 Action: init [EPS Finest]: 2008.04.09 09:19:29.634--ServerSession(2059288)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--Begin deploying Persistence Unit statJPATopLinkJ2EE; state Predeployed; factoryCount 2 [EPS Warning]: 2008.04.09 09:19:29.868--ServerSession(2059288)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--PersistenceUnitInfo statJPATopLinkJ2EE has transactionType RESOURCE_LOCAL and therefore jtaDataSource will be ignored [EPS Info]: 2008.04.09 09:19:29.884--ServerSession(2059288)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--EclipseLink, version: Eclipse Persistence Services - 1.0 (Build SNAPSHOT - 20080403) [EPS Config]: 2008.04.09 09:19:30.289--ServerSession(2059288)--Connection(17254324)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--connecting(DatabaseLogin( platform=>OraclePlatform user name=> "stat" connector=>JNDIConnector datasource name=>null )) [EPS Config]: 2008.04.09 09:19:30.289--ServerSession(2059288)--Connection(16022259)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--Connected: jdbc:oracle:thin:@//127.0.0.1:1521/orcl User: STAT Database: Oracle Version: Oracle Database 11g Release 11.1.0.0.0 - Production Driver: Oracle JDBC driver Version: 11.1.0.6.0-Production+ [EPS Finest]: 2008.04.09 09:19:30.289--ServerSession(2059288)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--sequencing connected, state is Preallocation_NoTransaction_State [EPS Finest]: 2008.04.09 09:19:30.289--ServerSession(2059288)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--sequence STAT_CLASS_SEQ_GENERATOR: preallocation size 25 [EPS Info]: 2008.04.09 09:19:30.336--ServerSession(2059288)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--file:/C:/opt/oc4j11samba/j2ee/home/applications/jpaELTestEAR/jpaELTestWeb/WEB-INF/classes/-statJPATopLinkJ2EE login successful [EPS Finest]: 2008.04.09 09:19:30.336--ServerSession(2059288)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--End deploying Persistence Unit statJPATopLinkJ2EE; state Deployed; factoryCount 2 *Exercise your application in a browser by requesting a JPQL query <pre> http://127.0.0.1:8888/jpaELTest/FrontController?action=query&jpql=select%20object(e)%20from%20StatClass%20e%20where%20e.id<100
- Browser Output
action: query JPQL: select object(e) from StatClass e where e.id<100 99 Results 1 org.eclipse.persistence.example.navigation.business.StatClass@15c0102