Skip to main content

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.

Jump to: navigation, search

Difference between revisions of "EclipseLink/Examples/JPA/WebSphere7 Web Tutorial"

m (EclipseLink JPA Deployed on IBM WebSphere 7 using Eclipse WTP)
m (Replacing page with '[http://wiki.eclipse.org/EclipseLink/Examples/JPA/WebSphere_Web_Tutorial Original WebSphere 7 tutorial page for EclipseLink JPA]')
 
(138 intermediate revisions by 2 users not shown)
Line 1: Line 1:
=EclipseLink JPA Deployed on IBM WebSphere 7 using Eclipse WTP=
+
[http://wiki.eclipse.org/EclipseLink/Examples/JPA/WebSphere_Web_Tutorial Original WebSphere 7 tutorial page for EclipseLink JPA]
 
+
<font color="red">Note: This tutorial' is under construction for the next week as of 20090115.</font>
+
 
+
 
+
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.
+
 
+
The [http://wiki.eclipse.org/Dali DALI] project was used to generate Entities from a schema with sequences already populated.
+
 
+
==Development Environment==
+
'''Software:''' [http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/R/eclipse-jee-ganymede-win32.zip Eclipse IDE for Java EE 3.4 Ganymede SR 1] (Oct 2008 +) IBM J9 JRE 1.6.0 build 2.4 20080816_22093.
+
 
+
==Prerequisites==
+
===<font color="green">Install Eclipse EE</font>===
+
*I installed a clean version of Eclipse Ganymede 3.4 EE Edition (Oct 2008)
+
 
+
===<font color="green">Install a Database</font>===
+
 
+
===<font color="green">Install WebSphere 7.0</font>===
+
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 [http://bugs.eclipse.org/160220 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''
+
**http://mobrien-pc2.st-mdc.ca.oracle.com:9064/ibm/console/login.do
+
*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
+
*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
+
 
+
[[Image:Websphere7_console_debug_screen.JPG]]
+
 
+
===Start the WebSphere Server===
+
Either run bin/startServer.bat or the following server ant test target in our suite.
+
<pre>
+
<trunk>jpa\eclipselink.jpa.test>ant server-start
+
</pre>
+
 
+
===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.
+
<pre>
+
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)
+
</pre>
+
===Deploy and Run EAR application===
+
Depending on your breakpoints you will see a stacktrace hit in the Eclipse IDE similar to the following.
+
<pre>
+
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)
+
</pre>
+
 
+
==References==
+
*See [[EclipseLink/UserGuide/Developing_JPA_Projects_%28ELUG%29|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
+

Latest revision as of 12:32, 5 October 2010

Original WebSphere 7 tutorial page for EclipseLink JPA

Back to the top