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/WebSphere7 Web Tutorial"
m (→EclipseLink JPA Deployed on IBM WebSphere 7 using Eclipse WTP) |
m (→EclipseLink JPA Deployed on IBM WebSphere 7 using Eclipse WTP) |
||
Line 4: | Line 4: | ||
− | If you want to get a small web application running quickly on WebSphere 7.0 you can use Eclipse to create the EAR and [[attach to a running WebSphere instance in debug mode on port 7781]]. | + | If you want to get a small web application running quickly on WebSphere 7.0 you can use Eclipse to create the EAR and [[EclipseLink/Examples/JPA/WebSphere7_Web_Tutorial#Remote_Debugging_EclipseLink_in_WebSphere_7.0_from_Eclipse_3.4|attach to a running WebSphere instance in debug mode on port 7781]]. |
This basic example details how to use Eclipse to run/debug a minimum J2EE web application servlet using EclipseLink JPA as the persistence provider. The goal of this example is to detail the minimum steps required to run EclipseLink inside the [http://www.ibm.com/developerworks/downloads/ws/was/?S_TACT=105AGX28&S_CMP=DLMAIN&S_CMP=rnav IBM WebSphere Application Server 7.0] server using the Eclipse IDE. At this point no presentation/controller layer such as JSF, Spring or Struts will be used beyond a basic HttpServlet so we can concentrate on the the integration layer JPA setup. | This basic example details how to use Eclipse to run/debug a minimum J2EE web application servlet using EclipseLink JPA as the persistence provider. The goal of this example is to detail the minimum steps required to run EclipseLink inside the [http://www.ibm.com/developerworks/downloads/ws/was/?S_TACT=105AGX28&S_CMP=DLMAIN&S_CMP=rnav IBM WebSphere Application Server 7.0] server using the Eclipse IDE. At this point no presentation/controller layer such as JSF, Spring or Struts will be used beyond a basic HttpServlet so we can concentrate on the the integration layer JPA setup. |
Revision as of 18:22, 20 January 2009
Contents
- 1 EclipseLink JPA Deployed on IBM WebSphere 7 using Eclipse WTP
- 1.1 Development Environment
- 1.2 Prerequisites
- 1.3 WebSphere Configuration Changes
- 1.4 JNDI Datasource Setup
- 1.5 Persistence JAR location
- 1.6 EclipseLink JAR location
- 1.7 JDBC JAR location
- 1.8 Create J2EE application
- 1.9 Persistence.xml
- 1.10 Publish EAR
- 1.11 Perform CRUD operations: JPQL insert and query
- 1.12 Remote Debugging EclipseLink in WebSphere 7.0 from Eclipse 3.4
- 1.13 References
EclipseLink JPA Deployed on IBM WebSphere 7 using Eclipse WTP
Note: This tutorial' is under construction for the next week as of 20090115.
If you want to get a small web application running quickly on WebSphere 7.0 you can use Eclipse to create the EAR and attach to a running WebSphere instance in debug mode on port 7781.
This basic example details how to use Eclipse to run/debug a minimum J2EE web application servlet using EclipseLink JPA as the persistence provider. The goal of this example is to detail the minimum steps required to run EclipseLink inside the IBM WebSphere Application Server 7.0 server using the Eclipse IDE. At this point no presentation/controller layer such as JSF, Spring or Struts will be used beyond a basic HttpServlet so we can concentrate on the the integration layer JPA setup.
The DALI project was used to generate Entities from a schema with sequences already populated.
Development Environment
Software: Eclipse IDE for Java EE 3.4 Ganymede SR 1 (Oct 2008 +) IBM J9 JRE 1.6.0 build 2.4 20080816_22093.
Prerequisites
Install Eclipse EE
- I installed a clean version of Eclipse Ganymede 3.4 EE Edition (Oct 2008)
Install a Database
Install WebSphere 7.0
I installed the commercial 7.0.0.1 version
Install WebSphere Eclipse 3.4 Server Plugin
We will first see if the WebSphere 6.0 or 6.1 plugin works with WebSphere 7.0 - it fails on missing jar files that are not present in 7.0. The WebSphere 6.1 Eclipse WTP server plugin is not shipped by default with Eclipse (WebSphere 6.0 for JEE 1.4 is).
- Note: The WebSphere 6.1 plugin for Eclipse WTP is currently being developed - see the following Eclipse WTP enhancement request 160220 in progress.
- We are not blocked from using Eclipse WTP to manage the WebSphere 6.1 server, but without this plugin we will need to attach manually to port 7781 of a running WebSphere server that was started in debug mode outside of the Eclipse IDE - we will use this alternate debug approach.
WebSphere Configuration Changes
JNDI Datasource Setup
Global Scoped Datasource Setup
Persistence JAR location
EclipseLink JAR location
JDBC JAR location
Create J2EE application
Persistence.xml
Publish EAR
Validating the WebSphere/EclipseLink configuration
Without eclipselink.jar reference
With eclipselink.jar reference
Perform CRUD operations: JPQL insert and query
Browser Output
Remote Debugging EclipseLink in WebSphere 7.0 from Eclipse 3.4
The following procedure details how to attach to a debug version of IBM WebSphere 7.0 with the Eclipse 3.4 IDE.
Note: we will not be modifying startServer.bat. The java process in that script is only for server startup - if you need to debug this part of the server.
Modify console setup to start server in debug mode
- Login to the console using your admin login or a default username like system
- Navigate to Servers | Server Types | WebSphere Application servers | server1
- Navigate on the right down to Additional Properties | Debugging service
- Enable JDWP by ckecking the checkbox Enable service at server startup"
- The default properties below will be OK unmodified
- JVM debug port = 7781
- JVM debug arguments = -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7781
- The default properties below will be OK unmodified
- Optionally you can add server packages if you have the source for WebSphere
- We will be debugging client test code and EclipseLink API in the Eclipse IDE
Start the WebSphere Server
Either run bin/startServer.bat or the following server ant test target in our suite.
<trunk>jpa\eclipselink.jpa.test>ant server-start
Attach Eclipse 3.4 to the debug port on WebSphere 7
- Right-click your test code
- Debug as | Debug Configurations
- select Remote Java Application
- create a new config by hitting the top-left new launch configuration icon
- type a name for your config and modify only the port to read 7781
- apply changes
- click debug
You should see the following stack trace ready for any breakpoints in your code to be hit.
VirtualAttributeTestSuite [Remote Java Application] IBM J9 VM[localhost:7781] Thread [P=833989:O=0:CT] (Running) Daemon Thread [Signal Dispatcher] (Running) Daemon Thread [Framework Event Dispatcher] (Running) Daemon Thread [Start Level Event Dispatcher] (Running) Thread [Worker-0] (Running)
Deploy and Run EAR application
Depending on your breakpoints you will see a stacktrace hit in the Eclipse IDE similar to the following.
VirtualAttributeTestSuite [Remote Java Application] IBM J9 VM[localhost:7781] Thread [P=833989:O=0:CT] (Running) Daemon Thread [Signal Dispatcher] (Running) ... Daemon Thread [Thread-52] (Running) Daemon Thread [ORB.thread.pool : 0] (Running) Daemon Thread [ORB.thread.pool : 1] (Suspended (breakpoint at line 302 in ConcurrencyManager)) ConcurrencyManager.isAcquired() line: 302 ClientSession(AbstractSession).isInTransaction() line: 2405 ClientSession(AbstractSession).beginTransaction() line: 538 SequencingManager$Preallocation_Transaction_NoAccessor_State.getNextValue(Sequence, AbstractSession) line: 455 SequencingManager.getNextValue(AbstractSession, Class) line: 905 ClientSessionSequencing.getNextValue(Class) line: 70 ObjectBuilder.assignSequenceNumber(Object, AbstractSession) line: 277 RepeatableWriteUnitOfWork(UnitOfWorkImpl).assignSequenceNumber(Object, ClassDescriptor) line: 402 RepeatableWriteUnitOfWork(UnitOfWorkImpl).registerNotRegisteredNewObjectForPersist(Object, ClassDescriptor) line: 3952 RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist(Object, ClassDescriptor) line: 359 RepeatableWriteUnitOfWork(UnitOfWorkImpl).registerNewObjectForPersist(Object, Map) line: 3899 EntityManagerImpl.persist(Object) line: 254 JPATxEmInvocation(JPAExEmInvocation).persist(Object) line: 336 JPATxEntityManager(JPAEntityManager).persist(Object) line: 123 VirtualAttributeTestSuite.testInsertVirtualAttribute() line: 63 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 45 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 37 Method.invoke(Object, Object...) line: 599 VirtualAttributeTestSuite(TestCase).runTest() line: 154 VirtualAttributeTestSuite(TestCase).runBare() line: 127 VirtualAttributeTestSuite(JUnitTestCase).runBareServer() line: 391 TestRunnerBean.runTest(String, String, Properties) line: 87 EJSRemote0SLTestRunner_ed643271.runTest(String, String, Properties) line: not available _EJSRemote0SLTestRunner_ed643271_Tie.runTest(InputStream, ResponseHandler) line: not available _EJSRemote0SLTestRunner_ed643271_Tie._invoke(String, InputStream, ResponseHandler) line: not available WSExtendedServerDelegate(ServerDelegate).dispatchInvokeHandler(InterceptorManager, ServerRequestInfoImpl, String, Object, ServerRequestReader) line: 622 WSExtendedServerDelegate(ServerDelegate).dispatch(ServerRequest) line: 475 ORB(ORB).process(ServerRequest) line: 504 ORB.process(ServerRequest) line: 1571 Connection.respondTo(RequestHandler, IIOPReader) line: 2771 Connection.doWork(RequestHandler, IIOPReader) line: 2640 WorkUnitImpl.doWork() line: 63 PooledThread.run() line: 118 ThreadPool$Worker.run() line: 1527 Daemon Thread [AIO Timer Thread 1] (Running) Daemon Thread [WebContainer : 0] (Running) ... Daemon Thread [RT=7:P=833989:O=0:WSTCPTransportConnection[addr=10.156.52.98,port=1553,local=9104]] (Running)
References
- See Developing JPA Projects in the EclipseLink User's Guide.
http://www.ibm.com/developerworks/eclipse/downloads/ganymede/
http://www.ibm.com/developerworks/eclipse/downloads/ganymede/dev.html
Originated on build 20090115 - EclipseLink 1.1 M6 - Michael O'Brien