<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-17645654</id><updated>2012-01-30T07:30:51.838-08:00</updated><title type='text'>Inside scoop on enterprise java and middleware technologies</title><subtitle type='html'>Rumblings from a Technologist and
Book author</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>83</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17645654.post-1804226582874074308</id><published>2011-03-24T22:07:00.000-07:00</published><updated>2011-03-24T22:13:38.093-07:00</updated><title type='text'>Best practices for building cloud based applications</title><content type='html'>I wrote another article outlining some best practices for building cloud based applications. You can read the article at http://www.devx.com/architect/Article/46602?trk=DXRSS_LATEST&lt;br /&gt;&lt;br /&gt;I am writing this blog using my iPad and blogger is not iPad friendly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1804226582874074308?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1804226582874074308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1804226582874074308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1804226582874074308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1804226582874074308'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2011/03/best-practices-for-building-cloud-based.html' title='Best practices for building cloud based applications'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1766884557356664918</id><published>2011-03-21T11:38:00.000-07:00</published><updated>2011-03-21T11:42:45.642-07:00</updated><title type='text'>Cloud Computing for Java Developers</title><content type='html'>I wrote an article &lt;a href="http://www.developer.com/java/java-cloud-development-what-developers-need-to-know.html"&gt;Java Cloud Development: What Developers Need to Know&lt;/a&gt; at Developer.com. This provides an introduction to Cloud Computing from Java Developers perspective. You can read the article &lt;a href="http://www.developer.com/java/java-cloud-development-what-developers-need-to-know.html"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1766884557356664918?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1766884557356664918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1766884557356664918' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1766884557356664918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1766884557356664918'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2011/03/cloud-computing-for-java-developers.html' title='Cloud Computing for Java Developers'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-4833184491506542457</id><published>2011-03-16T22:00:00.000-07:00</published><updated>2011-03-16T22:01:36.219-07:00</updated><title type='text'>EJB 3 In Action, 2nd Edition</title><content type='html'>The second edition of &lt;a href="http://manning.com/panda2"&gt;EJB 3 In Action&lt;/a&gt; was announced recently.  Ryan Cuprak joined as a new author of the book. Ryan and Reza are doing most of the work on the book. We have made a lot of changes in the content to include EJB 3.1 and other Java EE features such as CDI.&lt;br /&gt;Here is the table of contents for the book:&lt;br /&gt;&lt;br /&gt;Part I: Overview of the EJB landscape&lt;br /&gt;  1. What's what in EJB 3.1&lt;br /&gt;  2. A first taste of EJB 3&lt;br /&gt;&lt;br /&gt;Part II: Working with EJB 3 components&lt;br /&gt;  3. Building business logic with session beans&lt;br /&gt;  4. Messaging and message-driven beans&lt;br /&gt;  5. EJB runtime context, dependency injection, and aspect oriented programming&lt;br /&gt;  6. Transactions and security&lt;br /&gt;  7. Scheduling and timers in EJB&lt;br /&gt;  8. Exposing EJBs as SOAP and REST web services&lt;br /&gt;&lt;br /&gt;Part III: Using EJB 3 with JPA and CDI&lt;br /&gt;  9. JPA entities&lt;br /&gt;10. Managing entities&lt;br /&gt;11. Using CDI with EJB 3&lt;br /&gt;&lt;br /&gt;Part IV: Putting EJB 3 into action&lt;br /&gt;12. Packaging EJB 3 applications&lt;br /&gt;13. EJB 3 testing&lt;br /&gt;14. Designing EJB-based systems&lt;br /&gt;15. EJB performance and scalability&lt;br /&gt;16. EJB 3, Seam, and Spring&lt;br /&gt;17. The future of EJB 3&lt;br /&gt;&lt;br /&gt;Appendices&lt;br /&gt;  A. RMI primer&lt;br /&gt;  B. Migrating from EJB 2.1 to EJB 3&lt;br /&gt;  C. Annotations reference&lt;br /&gt;  D. Deployment descriptors reference&lt;br /&gt;  E. Installing and configuring the Java EE 6 SDK&lt;br /&gt;  F. EJB 3 developer certification exam&lt;br /&gt;  G. EJB 3 tools support&lt;br /&gt;&lt;br /&gt;The book is available on &lt;a href="http://manning.com/panda2"&gt;Manning Early Release Program&lt;/a&gt;. You can join MEAP and help improve the program&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-4833184491506542457?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/4833184491506542457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=4833184491506542457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4833184491506542457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4833184491506542457'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2011/03/ejb-3-in-action-2nd-edition.html' title='EJB 3 In Action, 2nd Edition'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-7389141545404468442</id><published>2010-11-08T09:00:00.000-08:00</published><updated>2010-11-08T09:04:27.184-08:00</updated><title type='text'>Webinar: Event Processing for Java Developers</title><content type='html'>I'll be speaking at a webinar &lt;a href="http://starviewtech.wordpress.com/2010/11/01/event-processing-seminar/"&gt;Event Processing for Java Developers&lt;/a&gt; arranged by Starview Technology, Inc tomorrow (Nov 9) at 10am PST. Register&lt;a href="https://www2.gotomeeting.com/register/874067434"&gt; her&lt;/a&gt;e.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-7389141545404468442?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/7389141545404468442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=7389141545404468442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/7389141545404468442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/7389141545404468442'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2010/11/webinar-event-processing-for-java.html' title='Webinar: Event Processing for Java Developers'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-2489185205440946363</id><published>2010-11-04T13:30:00.000-07:00</published><updated>2010-11-04T13:52:45.656-07:00</updated><title type='text'>Introducing an Event Server Platform</title><content type='html'>&lt;span style="font-size:100%;"&gt;After working for about seven years shaping and evangelizing for a Java Application Server platform and J2EE, I decided to move on. For the last year or so I’ve been spending my energy shaping up the next-generation middleware platform for building, deploying, and managing event-processing applications. &lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Most vendors have focused on providing limited functionality such as windowing, filtering, and pattern matching, often known as Complex Event Processing (CEP).These vendors have also been targeting limited use cases in the Financial Services sector. As CEP did not take off, many vendors have buried their offerings inside their SOA and BPM solutions. &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;However, I think event processing is pervasive inside all businesses. Whenever you tweet or send a text/sms it generates an event. Whenever you plug in your electric vehicle to the grid, whenever you have a power outage, or whenever a machine breaks down in a factory – events are generated. A smart business needs to analyze and exploit these messages to make the right decision to take the right decision at the right time. Many of the new generation of applications are being built using an event-driven paradigm and need a new generation of middleware platform named an Event Server Platform.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;  &lt;/span&gt;&lt;span style="font-size:100%;"&gt;In this article, I will introduce an event server platform.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://3.bp.blogspot.com/_Mv8xjdIVnWw/TNMcCX4UkPI/AAAAAAAAAIg/eNC65__lySo/s1600/Platform.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 216px;" src="http://3.bp.blogspot.com/_Mv8xjdIVnWw/TNMcCX4UkPI/AAAAAAAAAIg/eNC65__lySo/s320/Platform.png" alt="" id="BLOGGER_PHOTO_ID_5535799194064031986" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2 style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-size:130%;"&gt;What is an Event Server?&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Why do you use an application server? Because you do not want to reinvent the wheel and take advantage of several services the application server provides to quickly build your application.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;  &lt;/span&gt;&lt;span style="font-size:100%;"&gt;An event server provides similar functionality for users to rapidly build and deploy event-processing applications – optimized for event processing. I will discuss why traditional application servers are not suitable for event processing in a future article. One of the key points here is that traditional application servers are optimized for request-response applications and not for event processing.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;In all practical senses an event server is an application server optimized for event processing applications. Let us look at an example architecture. The following figure shows the architecture for the Starview Event Server that is built on OSGi:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://2.bp.blogspot.com/_Mv8xjdIVnWw/TNMYS-XNcFI/AAAAAAAAAH4/Y5R4ZY6aZ8U/s1600/image001.png"&gt;&lt;img style="cursor: pointer; width: 306px; height: 320px;" src="http://2.bp.blogspot.com/_Mv8xjdIVnWw/TNMYS-XNcFI/AAAAAAAAAH4/Y5R4ZY6aZ8U/s320/image001.png" alt="" id="BLOGGER_PHOTO_ID_5535795081225531474" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;You have to build an application before you deploy it to an event server. So you need tools and languages to build an application.&lt;/p&gt;  &lt;h3 style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-size:130%;"&gt;Development Tool&lt;/span&gt;&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;You will need to build, test, and debug your event-driven application and hence you will need an IDE.&lt;span style=""&gt;  &lt;/span&gt;Here is an example of Starview ACE that uses a model-driven approach to build an event-driven application. Starview ACE is an Eclipse plug-in and application models are based on the Eclipse Model Framework:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://2.bp.blogspot.com/_Mv8xjdIVnWw/TNMYxt0Ku7I/AAAAAAAAAIA/cku82QbFYfU/s1600/image003.png"&gt;&lt;img style="cursor: pointer; width: 446px; height: 278px;" src="http://2.bp.blogspot.com/_Mv8xjdIVnWw/TNMYxt0Ku7I/AAAAAAAAAIA/cku82QbFYfU/s320/image003.png" alt="" id="BLOGGER_PHOTO_ID_5535795609359530930" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;h3 style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-size:130%;"&gt;Connectivity Adapters&lt;/span&gt;&lt;/h3&gt;  &lt;p class="MsoListParagraph"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;You will need to capture an event stream at its source and in-bound adapters provide this connectivity. The event source can be a messaging system, SNMP traps, socket reader, log files, database updates, and so on. An event server provides out–of-the-box adapters to simplify reading event sources without much programming. &lt;span style=""&gt; &lt;/span&gt;The adapters also generate outbound events or integrate with third-party systems and resources for correlating events.&lt;/p&gt;  &lt;p class="MsoListParagraph"&gt; &lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255); font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="Heading3Char"&gt;Programming Language aka Event Processing Language&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;In order to process the events you need an Event Processing Language. The CEP vendors often refer to Stream SQL as their EPL. However, as you know SQL is quite limiting in nature and you will need the full semantics of a programming language built for event processing&lt;span style=""&gt;  &lt;/span&gt;that provides fast and efficient in-memory structures to represent complex data types, andin-stream processing and analytics. The Event Processing Language must provide the ability to maintain state and support the concept of an event-processing agent for implementing complex event-processing rules. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Also, you do not want your event-processing rules to be static in nature: you want to enable your business users to author rules. Hence the programming language must provide a foundation to develop Domain-Specific Languages. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Here is a typical architecture for such an Event Processing Language:&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://1.bp.blogspot.com/_Mv8xjdIVnWw/TNMZMM33lFI/AAAAAAAAAII/rUHO7M0a_gA/s1600/image005.png"&gt;&lt;img style="cursor: pointer; width: 389px; height: 167px;" src="http://1.bp.blogspot.com/_Mv8xjdIVnWw/TNMZMM33lFI/AAAAAAAAAII/rUHO7M0a_gA/s320/image005.png" alt="" id="BLOGGER_PHOTO_ID_5535796064373150802" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;This diagram shows the architecture for the Star&lt;span style=""&gt;™&lt;/span&gt; language.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;You may ask, “where is Java in this equation?”&lt;span style=""&gt;  &lt;/span&gt;The event servers must integrate with existing Java applications, and provide the ability to build applications using Java. You have to remember, though, that Java has its limits and you have to explore the capabilities provided by Event Processing Languages.&lt;/p&gt;  &lt;h3 style="color: rgb(51, 51, 255);"&gt;Distributed Application&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Many of the event processing applications are distributed in nature and require event processing at the edge. These are prevalent in many use cases such as Quality of Service, Smart Grid optimization, and manufacturing automation, where you want to process events locally and filter out unnecessary events at the edge. The event server platform must provide mechanisms to deploy a lightweight version of the event server at the edge and collaborate with a centralized event server without requiring hundreds of lines of code!&lt;/p&gt;  &lt;h3 style="color: rgb(51, 51, 255);"&gt;Management Infrastructure&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;You need a good management infrastructure for managing your event servers and applications. This becomes challenging when applications are distributed in nature. The management infrastructure should provide the ability to deploy, manage, and monitor applications, event servers, and server groups. And the infrastructure must be built using an event-driven paradigm.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The following screen shot shows the management console for Starview Enterprise Hub that provides such a management infrastructure:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://1.bp.blogspot.com/_Mv8xjdIVnWw/TNMZoyuEcVI/AAAAAAAAAIQ/Zf1KJ86TWpE/s1600/image007.png"&gt;&lt;img style="cursor: pointer; width: 374px; height: 233px;" src="http://1.bp.blogspot.com/_Mv8xjdIVnWw/TNMZoyuEcVI/AAAAAAAAAIQ/Zf1KJ86TWpE/s320/image007.png" alt="" id="BLOGGER_PHOTO_ID_5535796555568935250" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;These are the basics of an Event Server Platform. You will several advanced features such as high-availability, caching, etc.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;We will discuss some of these topics in detail in future blog entries.&lt;/p&gt;  &lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:11pt;"  &gt;&lt;span style="font-size:100%;"&gt;Bye!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;References and Suggested Reading&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:11pt;"  &gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://manning.com/EventProcessingInAction"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Event Processing In Action&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:11pt;"  &gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.starviewtechnology.com/starview-products.html"&gt;Starview Enterprise Platform&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:11pt;"  &gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;Attend my web seminar on Nov 9, 2010 &lt;a href="https://www2.gotomeeting.com/register/874067434"&gt;Event Processing for Java Developers&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:11pt;"  &gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-2489185205440946363?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/2489185205440946363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=2489185205440946363' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2489185205440946363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2489185205440946363'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2010/11/introducing-event-server-platform.html' title='Introducing an Event Server Platform'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Mv8xjdIVnWw/TNMcCX4UkPI/AAAAAAAAAIg/eNC65__lySo/s72-c/Platform.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-4797085176069175630</id><published>2010-01-12T12:11:00.000-08:00</published><updated>2010-01-12T12:28:31.823-08:00</updated><title type='text'>SOA Management - Sample Chapter from Middleware Management Book</title><content type='html'>Oracle Technology Network published sample chapter SOA Management (Oracle Service Bus) of my &lt;a href="http://www.packtpub.com/middleware-management-with-oracle-enterprise-manager-grid-control-10g-r5/book"&gt;Middleware Management&lt;/a&gt; book.&lt;br /&gt;&lt;br /&gt;You can access the chapter at http://www.oracle.com/technology/books/pdfs/sample-soa-management.pdf&lt;br /&gt;&lt;br /&gt;This book covers management of both Oracle Fusion Middleware (WebLogic/OC4J, SOA Suite, IDM, Coherence, Forms/Reports, etc. and non-Oracle Midddleware such as JBoss, Tomcat, Apache Http Server IBM WebSphere and Microsoft .Net/IIS, etc&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can purchase the book at Amazon at http://www.amazon.com/Middleware-Management-Enterprise-Manager-Control/dp/1847198341.&lt;br /&gt;&lt;br /&gt;Also see details at http://www.packtpub.com/middleware-management-with-oracle-enterprise-manager-grid-control-10g-r5/book&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-4797085176069175630?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/4797085176069175630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=4797085176069175630' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4797085176069175630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4797085176069175630'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2010/01/soa-management-sample-chapter-from.html' title='SOA Management - Sample Chapter from Middleware Management Book'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-9050408491856058355</id><published>2009-11-17T22:17:00.000-08:00</published><updated>2009-11-17T22:41:44.731-08:00</updated><title type='text'>Should Java be free from Sun/Oracle?</title><content type='html'>There was an interesting blog from SAP CTO “&lt;a href="http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/16648"&gt;Freedom of Java&lt;/a&gt;”!  He has a very absurd comparison of freeing Java from Sun/Oracle’s clout with falling of Berlin wall.  Should we free Java from Sun? My answer is an emphatic No! I have been a Java enthusiast for about a decade. Although I never liked Sun’s control over Java/JCP, I have to admit that Java flourished under Sun’s stewardship.  I hope Sun/Oracle will continue the leadership in taking Java to the next level. Oracle once claimed they support 300% Java! As an ex-employee of Oracle I know that Oracle’s business is completely dependent on success of Java, all of fusion middleware, applications, management products (enterprise manager) developed in Java. Oracle cannot gamble or bungle on Java. SAP’s concern seems to be too unjustified and seems to be politically motivated.&lt;br /&gt;&lt;br /&gt;They are suggesting that Java/JCP should be freed from Sun/Oracle and controlled by some independent consortium (Java foundation) and have volunteered to throw money, time and energy behind Java. I don’t think SAP has contributed much to Java community in the past 15 years, besides furthering its own NetWeaver platform to attract developers to their proprietary application platform.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Interestingly enough they claim to have &lt;a href="http://java.sun.com/j2ee/tested_config/sap-javaee5.html"&gt;Java EE 5 certification&lt;/a&gt; for past two years. Note that Java EE 5 was finalized about two and half years back. I think they still do not have a production version of application server that supports Java EE 5.  I could not find in their website about their production support even for J2EE 1.4. Their website still claims support for J2EE 1.3 as shown below:&lt;br /&gt;http://www.sap.com/platform/netweaver/standardssupport/java.epx&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Mv8xjdIVnWw/SwOU4MF1QVI/AAAAAAAAAHc/AHeid3RO7Bo/s1600/image001.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_Mv8xjdIVnWw/SwOU4MF1QVI/AAAAAAAAAHc/AHeid3RO7Bo/s320/image001.png" alt="" id="BLOGGER_PHOTO_ID_5405327670813999442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;They still have a developer preview for Java EE 5 at http://www.sdn.sap.com/irj/scn/downloads?rid=/library/uuid/00846edd-355b-2b10-f38c-df94ec96eb74&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Mv8xjdIVnWw/SwOU4el7s0I/AAAAAAAAAHk/NOAsGdpkfj4/s1600/image003.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_Mv8xjdIVnWw/SwOU4el7s0I/AAAAAAAAAHk/NOAsGdpkfj4/s320/image003.png" alt="" id="BLOGGER_PHOTO_ID_5405327675780477762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;How can we believe that SAP will pump millions of dollars to an open consortium to support Java’s future growth when they have not invested money to build an application server that supports latest Java standards? I think they are just playing a devil’s role here to complicate matters with Oracle’s pending acquisition of Sun.&lt;br /&gt;&lt;br /&gt;Without strong leadership, Java will perish. If we leave it to open source then it may fork and we will end up with several Java flavors and that will be a death blow to Java. Sun has invested billions of dollars on research, development and building the community around Java and should control it. If Oracle’s acquisition of Sun succeeds then Oracle should control Java/JCP, if it fails for some reasons then who should take over Sun (if SAP does!) should own Java!&lt;br /&gt;&lt;br /&gt;That’s my 2 cents!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-9050408491856058355?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/9050408491856058355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=9050408491856058355' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/9050408491856058355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/9050408491856058355'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2009/11/should-java-be-free-from-sunoracle.html' title='Should Java be free from Sun/Oracle?'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Mv8xjdIVnWw/SwOU4MF1QVI/AAAAAAAAAHc/AHeid3RO7Bo/s72-c/image001.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-6044485574742711099</id><published>2009-10-06T21:46:00.000-07:00</published><updated>2009-10-06T21:49:51.880-07:00</updated><title type='text'>Book: Middleware Management with Enterprise Manager Grid Control</title><content type='html'>I coauthored another book &lt;a href="http://www.packtpub.com/middleware-management-with-oracle-enterprise-manager-grid-control-10g-r5/book"&gt;Middleware Management with Oracle Enterprise Manager&lt;/a&gt; with Arvind Maheshwari. This covers managing both Oracle Fusion Middleware and non-Oracle Middleware such as IBM WebSphere, JBoss, Microsoft Middleware with Oracle Enterprise Manager.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-6044485574742711099?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/6044485574742711099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=6044485574742711099' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/6044485574742711099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/6044485574742711099'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2009/10/book-middleware-management-with.html' title='Book: Middleware Management with Enterprise Manager Grid Control'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1482503903141146823</id><published>2009-06-02T11:24:00.000-07:00</published><updated>2009-06-02T11:51:58.772-07:00</updated><title type='text'>My JavaOne Presentation:</title><content type='html'>I'm co-presenting with my co-author (EJB 3 In Action) Reza Rahman on JPA Application Tuning.      &lt;br /&gt;&lt;br /&gt;Here are details for the talk:&lt;br /&gt;&lt;br /&gt;TS-3977 -Keeping a Relational Perspective for Optimizing the Java™ Persistence API &lt;br /&gt;&lt;br /&gt;Thursday June 04 4:10 PM - 5:10 PM Hall E 134&lt;br /&gt;&lt;br /&gt;If you are attending JavaOne this year, please attend the presentation. Also we have a book signing scheduled tomorrow (Wednesday June 3, 2pm at Java Book Store) so stop by if you want your book to be signed&lt;br /&gt;&lt;br /&gt;-Debu&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1482503903141146823?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1482503903141146823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1482503903141146823' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1482503903141146823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1482503903141146823'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2009/06/my-javaone-presentation.html' title='My JavaOne Presentation:'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-4971974552051894794</id><published>2009-01-09T10:47:00.000-08:00</published><updated>2009-01-09T11:50:45.304-08:00</updated><title type='text'>Using Quartz Scheduler on  WebLogic Server</title><content type='html'>&lt;p class="MsoNormal"&gt;I'm not a Quartz expert but I keep on getting emails with Quartz questions as one of my blog was published as &lt;a href="http://www.theserverside.com/tt/blogs/showblog.tss?id=QuartzSchedulerInJ2EE"&gt;a featured article at TheServerSide.com&lt;/a&gt; 4-5 years back. I got some questions on using Quartz on WebLogic Server recently. I modified the original example to run on WebLogic Server.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;br /&gt;You can download this sample from&lt;a href="http://debupanda.googlepages.com/QuartzOnWLS.zip"&gt; here.&lt;/a&gt;&lt;/p&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;The Example&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;1. This sample uses TestEJB which is a stateless bean that has &lt;strong&gt;yourMethod&lt;/strong&gt; that need to be scheduled as a job/service.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;2. This method execution is scheduled as a Job from from &lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;QuartzManagerBean which is &lt;/span&gt;EJB 3.0 Session bean.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;3.  A Generic Servlet &lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;QuartzServlet uses dependency injection to invoke the QuartzManager from its init() method.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;4. The QuartzServlet is automatically loaded using load-on-start mechanism. Hence as  soon as the application is deployed - the job will be submitted  .&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;How to Run the Example&lt;/span&gt;&lt;br /&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;1. You can download the code example from &lt;a href="http://debupanda.googlepages.com/QuartzOnWLS.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt; 2. This is designed to be deployed in the exampleServer. If you want to deploy in a different domain/server you have to make appropriate changes to common.xml&lt;br /&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;3. Start your WebLogic Server. Unlike OC4J that requires –userThreads,&lt;span style=""&gt;  &lt;/span&gt;no special parameter or flag is required for WebLogic to run the example.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;4. Set your environment variables. If you are using examplesServer, you can use &lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;%BEA_HOME%\wlserver_10.3\samples\domains\wl_server\setExamplesEnv.bat &lt;span style="font-size:100%;"&gt;script to set environment variables required to compile and deploy the application&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="font-size:100%;"&gt;5. To compile and deploy, just run &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;ant&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="font-size:100%;"&gt;You will see the application to be deployed in console where WebLogic Server was started.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;J&lt;span style="color: rgb(0, 0, 153);"&gt;an 9, 2009 10:45:54 AM org.quartz.plugins.management.ShutdownHookPlugin initial&lt;/span&gt;&lt;o:p style="color: rgb(0, 0, 153);"&gt;&lt;/o:p&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ize&lt;/span&gt;&lt;o:p style="color: rgb(0, 0, 153);"&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;INFO: Registering Quartz shutdown hook.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Jan 9, 2009 10:45:54 AM org.quartz.simpl.RAMJobStore initialize&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;INFO: RAMJobStore initialized.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Jan 9, 2009 10:45:54 AM org.quartz.impl.StdSchedulerFactory instantiate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;INFO: Quartz scheduler 'WebLogicQuartzScheduler' initialized from default resour&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;ce file in Quartz package: 'quartz.properties'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Jan 9, 2009 10:45:54 AM org.quartz.impl.StdSchedulerFactory instantiate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;INFO: Quartz scheduler version: 1.3.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Jan 9, 2009 10:45:54 AM org.quartz.core.QuartzScheduler start&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;INFO: Scheduler WebLogicQuartzScheduler_$_one started.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Invoking EJB to schedule Job ..&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;0 0/5 * * * ?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Scheduling Job ..&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;0 0/5 * * * ?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Timer scheduled now ..&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Generating report&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Report Generation Completed&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Hope this helps!&lt;br /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-4971974552051894794?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/4971974552051894794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=4971974552051894794' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4971974552051894794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4971974552051894794'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2009/01/using-quartz-scheduler-on-weblogic.html' title='Using Quartz Scheduler on  WebLogic Server'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-7992221873646943052</id><published>2008-11-13T08:17:00.000-08:00</published><updated>2008-11-13T08:23:15.624-08:00</updated><title type='text'>Article:Managing  Complexity with BPEL Environment</title><content type='html'>&lt;p class="MsoNormal"&gt;SOA World published an article on BPEL Management written by me with Arvind Maheshwari.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;You can read the article: &lt;a href="http://soa.sys-con.com/node/744119"&gt;Managing Complexity with BPEL Management&lt;/a&gt;!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-7992221873646943052?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/7992221873646943052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=7992221873646943052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/7992221873646943052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/7992221873646943052'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/11/articlemanaging-complexity-with-bpel.html' title='Article:Managing  Complexity with BPEL Environment'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1614768576754027084</id><published>2008-11-06T02:02:00.000-08:00</published><updated>2008-11-06T02:21:02.046-08:00</updated><title type='text'>Enterprise Java – State of the World!</title><content type='html'>&lt;p class="MsoNormal" style=""&gt;One of my friends commented: “Java is no longer cool! Not hot either! What is the current state of enterprise Java?”&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;First it was .Net and then came a bonanza of scripting languages such as Ruby. All these technologies were there to eclipse the popularity of Java and J2EE. The hypes for these technologies were short-lived. The forecast for demise of Java EE was highly exaggerated. Java and J2EE still lives on! &lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;I divide the players in the enterprise Java markets primarily into two buckets. The commercial vendors selling J2EE application server and the vendors building open source and so called free products. However a third force is emerging that is looking to disrupt the J2EE market space.&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;The commercial market space is now officially two horses’ race after Oracle acquired BEA. The battle is still on for the two traditional rivals! One application server (WebLogic) is stylish and always ahead with emerging technology and the other one proprietary loaded (Websphere) with the old baggage. Java EE 5 finalized in June 2006 and I&lt;a href="http://www.infoq.com/news/2008/11/websphere7-release"&gt;BM Websphere just got certified with Java EE 5&lt;/a&gt;. That’s more than two years since the spec was finalized.  That’s not strange though. JBoss that still do not have a production release that is Java EE 5 certified. Although they &lt;a href="http://sacha.labourey.com/2008/09/15/jboss-as-is-now-ee5-certified/"&gt;announced it's &lt;/a&gt;arrival  more than a month back, I do not see a production version available as yet. They have a release candidate!&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;Now that we discussed JBoss’s certification issue let us look at the open source products. About two years back JBoss was the crown prince in the open source market. None of the other products Jonas, Glassfish or Geronimo had capabilities to challenge its supremacy. However JBoss lost the momentum in past year and half after being acquired by RedHat. Glassfish has gained a significant mindshare in last year and half thanks to their quality Java EE 5 implementation. I think the delay in shipping a quality Java EE 5 implementation by JBoss was a primary reason. Geronimo has not gotten much traction! However we should not forget that many customers still use Tomcat with just web applications. Although Tomcat does not have all bells and whistles of Java EE – it is still the most dominant open source container.&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;I put Spring in the third bucket. Spring is a great framework that makes application development simple. Java EE 5 borrowed a lot of great ideas from the Spring framework. Spring Framework certainly helped enterprise Java to go further. SpringSource, the company behind Spring Framework launched their OSGi-based application server named &lt;a href="http://www.springsource.com/products/suite/dmserver"&gt;Spring dm Server&lt;/a&gt;. Spring dm Server not only competes with other application server vendors in the market. It also competes with Java EE! It allows you to deploy WAR modules and OSGi bundles. It is at its first version and lacks good high availability, manageability features. SpringSource hopes to implement part of Java EE 6 specs. If they are successful – Spring dm Server may be a disruptive force for the Java EE application server market. I will blog about my first impressions on Spring dm Server (write capabilities and limitations) in my upcoming blog.&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;Many people have raised concerns about slow adoption rate of Java EE 5. Is the slow adoption by two major players (IBM and JBoss) inhibiting the adoption rate for Java EE 5? Possibly!  However we have to remember that for most companies, generating revenue is more important than the underlying technology. Many customers have deployed their applications using J2EE 1.4 and they achieved their performance and scalability goals so they cannot just throw those away and jump on to the Java EE 5 bandwagon. Having said that many customers are using Java EE 5 only with new development projects. The sales of my book has picked up lately. &lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;With economy going down south- budgets for new projects are limited! Having said that Java is still the leading platform for building enterprise applications.&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;The JCP team is gearing up to finalize Java EE 6 by JavaOne 2009. This gives a fuzzy feeling that enterprise Java is still thriving.  What do you think? &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1614768576754027084?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1614768576754027084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1614768576754027084' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1614768576754027084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1614768576754027084'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/11/enterprise-java-state-of-world.html' title='Enterprise Java – State of the World!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-5941076674304175297</id><published>2008-07-30T01:44:00.000-07:00</published><updated>2008-07-30T01:51:07.957-07:00</updated><title type='text'>Using EJBContext from an EJB 3 Interceptor</title><content type='html'>&lt;p class="MsoNormal"&gt;I got a question from a customer that he wants to use EJBContext from an EJB 3 Interceptor.&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;Yes, it’s very simple. Just inject the EJBContext into the interceptor using @Resource injection.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;See the example code that uses methods of SessionContext as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt; package actionbazaar.buslogic; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt; import javax.annotation.Resource; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt; import javax.interceptor.AroundInvoke; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt; import javax.interceptor.InvocationContext; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt; public class CheckPermissionInterceptor { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;    &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;@Resource &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0); font-weight: bold;"&gt;    private javax.ejb.SessionContext ctx; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;    @AroundInvoke &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;    public Object checkUserRole(InvocationContext ic) throws Exception { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;        System.out.println("*** CheckPermission Interceptor invoked for " &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;                + ic.getTarget() + " ***"); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;        if (!&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;ctx.isCallerInRole("admin")&lt;/span&gt;) { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;            throw new SecurityException("User: '" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;                    &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;+ ctx.getCallerPrincipal().getName() &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;                    + "' does not have permissions for method " &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;                    + ic.getMethod()); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;        } &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;        return ic.proceed(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;    } &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt; }&lt;/span&gt;&lt;/span&gt;    &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If you want the run-able version of the example code, you can download from &lt;a href="http://manning.com/panda"&gt;http://manning.com/panda&lt;/a&gt; and look at Chapter 5 example.&lt;br /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt; &lt;!--[endif]--&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-5941076674304175297?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/5941076674304175297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=5941076674304175297' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/5941076674304175297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/5941076674304175297'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/07/using-ejbcontext-from-ejb-3-interceptor.html' title='Using EJBContext from an EJB 3 Interceptor'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-3738192245292097855</id><published>2008-07-28T23:31:00.000-07:00</published><updated>2008-07-28T23:41:43.292-07:00</updated><title type='text'>My Sessions at Oracle Open World 2008</title><content type='html'>&lt;p class="MsoNormal"&gt;I’ve two sessions at Oracle Open World 2008, San Francisco. Here are my session details:&lt;br /&gt;&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;S298520 : Best Practices for Managing Your Oracle WebLogic Environment with Oracle Enterprise Manager&lt;br /&gt;&lt;/b&gt;Track: Application Server and Transaction Processing&lt;br /&gt;Room: Rm 2006&lt;br /&gt;Date: 2008-09-22&lt;br /&gt;Start Time: 11:30 &lt;br /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt; &lt;!--[endif]--&gt;&lt;b&gt;S298522 : Top Five Things DBAs Must Know About Managing Middleware&lt;br /&gt;&lt;/b&gt;Track: Application Server and Transaction Processing&lt;br /&gt;Room: Rm 2003&lt;br /&gt;Date: 2008-09-25&lt;br /&gt;Start Time: 15:00&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;See you at San Francisco!&lt;br /&gt;&lt;/p&gt;  &lt;b&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt; &lt;!--[endif]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-3738192245292097855?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/3738192245292097855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=3738192245292097855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3738192245292097855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3738192245292097855'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/07/my-sessions-at-oracle-open-world-2008.html' title='My Sessions at Oracle Open World 2008'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-2681473559872482597</id><published>2008-07-18T01:37:00.000-07:00</published><updated>2008-07-18T01:41:12.744-07:00</updated><title type='text'>EJB 3 In Action available at Safari Online</title><content type='html'>If you enjoy reading online then it's a good news for readers of &lt;a href="http://manning.com"&gt;EJB 3 in Action&lt;/a&gt;. It is now available online at &lt;a href="http://safari.oreilly.com/9781933988344"&gt;Safari&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-2681473559872482597?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/2681473559872482597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=2681473559872482597' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2681473559872482597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2681473559872482597'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/07/ejb-3-in-action-available-at-safari.html' title='EJB 3 In Action available at Safari Online'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-9110434210498000613</id><published>2008-07-07T02:24:00.000-07:00</published><updated>2008-07-07T02:42:10.628-07:00</updated><title type='text'>Introduction to EclipseLink</title><content type='html'>Doug Clarke has written a &lt;a href="http://java.dzone.com/articles/introducing-eclipselink"&gt;nice article&lt;/a&gt; that introduces EclipseLink.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-9110434210498000613?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/9110434210498000613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=9110434210498000613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/9110434210498000613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/9110434210498000613'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/07/introduction-to-eclipselink.html' title='Introduction to EclipseLink'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1673747823737085810</id><published>2008-06-26T03:39:00.000-07:00</published><updated>2008-06-26T06:12:23.275-07:00</updated><title type='text'>EJB 3 Stateless bean Web service in WebLogic Server</title><content type='html'>I recently got some questions from customers about the procedure for deploying&lt;span style=""&gt;  &lt;/span&gt;EJB 3 Session Bean Web service in WebLogic 10. In this blog, I will outline the steps.&lt;br /&gt;&lt;br /&gt;First develop your EJB3 session bean web service as follows:&lt;br /&gt;&lt;br /&gt;   &lt;p  style="color: rgb(51, 51, 255);font-family:courier new;" class="MsoNormal"&gt;@WebService(name="PlaceBid",&lt;br /&gt;&lt;span style=""&gt;      &lt;/span&gt;serviceName="PlaceBidService", portName = "PlaceBidPort",&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;targetNamespace = "http://actionbazaar.com/xml")&lt;span style=""&gt;  &lt;/span&gt;&lt;br /&gt;@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)&lt;span style=""&gt;                   &lt;/span&gt;&lt;br /&gt;@PersistenceContext(unitName="actionBazaar",name="actionBazaar")&lt;br /&gt;@Stateless&lt;br /&gt;public class PlaceBidBean {&lt;/p&gt;      &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;@WebMethod                                                      &lt;/span&gt;&lt;br /&gt;&lt;p  style="color: rgb(51, 51, 255);font-family:courier new;" class="MsoNormal"&gt;&lt;span style=""&gt;  &lt;/span&gt;public Long addBid(String userId,&lt;span style=""&gt;    &lt;/span&gt;Long itemId,   Double bidPrice) throws BidException {&lt;/p&gt;  &lt;p  style="color: rgb(51, 51, 255);font-family:courier new;" class="MsoNormal"&gt;….&lt;/p&gt;  &lt;p face="courier new" style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;/p&gt;    &lt;p style="color: rgb(51, 51, 255); font-family: courier new;" class="MsoNormal"&gt;}&lt;/p&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;Deployment&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Unlike OC4J, WebLogic do not support parsing of JAX-WS annotations at deployment time and if you try to deploy the compiled EJB 3 Web service, you will get deployment time exception. You have to run the EJB 3 WS thru annotation parsing tool (jwsc –java web services compile) supplied with WebLogic to generate the artifacts and package in your ejb-jar module.&lt;br /&gt;&lt;br /&gt;Here is an example ant task to create the web service:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);font-family:courier new;" &gt;&amp;lt;target&lt;br /&gt;name=&amp;quot;build-ws-server&amp;quot; description=&amp;quot;Target that builds the&lt;br /&gt;target Web Service&amp;quot;&amp;gt&lt;br /&gt;&amp;lt;jwsc&lt;br /&gt;srcdir=&amp;quot;${src.ejb.dir}&amp;quot&lt;br /&gt;destdir=&amp;quot;${bld.service.dir}&amp;quot&lt;br /&gt;classpath=&amp;quot;${common.j2ee.class.path}&amp;quot&lt;br /&gt;fork=&amp;quot;true&amp;quot&lt;br /&gt;keepGenerated=&amp;quot;true&amp;quot&lt;br /&gt;deprecation=&amp;quot;${deprecation}&amp;quot&lt;br /&gt;keepTempFiles=&amp;quot;true&amp;quot&lt;br /&gt;listfiles=&amp;quot;true&amp;quot&lt;br /&gt;debug=&amp;quot;${debug}&amp;quot;&amp;gt&lt;br /&gt;&amp;lt;jws&lt;br /&gt;file=&amp;quot;actionbazaar/buslogic/PlaceBidBean.java&amp;quot; type=&amp;quot;JAXWS&amp;quot;&lt;br /&gt;explode=&amp;quot;true&amp;quot;/&amp;gt&lt;br /&gt;&amp;lt;/jwsc&amp;gt&lt;br /&gt;&amp;lt;/target&amp;gt&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;&amp;lt;target name="package-ejb"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;                 depends="compile-ejb-classes,build-ws-server"&gt;; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;&amp;lt;mkdir dir="${bld.ejb.dir}/actionbazaar/buslogic/jaxws" /&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    &amp;lt;copy todir="${bld.ejb.dir}/actionbazaar/buslogic/jaxws"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;&amp;lt;fileset dir="${bld.service.dir}/actionbazaar/buslogic/PlaceBidBean/actionbazaar/buslogic/jaxws" includes="*"/&gt; &amp;lt;/copy&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;&amp;lt;echo message="-----&amp;gt; Create EJB jar file"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;&amp;lt;jar jarfile="${bld.ear.dir}/${ejb.name}.jar"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;&amp;lt;fileset dir="${bld.ejb.dir}" includes="**" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;&amp;lt;/jar&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;&amp;lt;/target &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Make sure to package the generated artifacts in the EJB JAR and then deploy the EJB-JAR or EAR to the WebLogic Server. Note that if your web service depends upon custom Java objects - the generated artifacts contain duplicate Java classes that you already may have. These duplicated classes are on a separate package structure and cause ClassCastException for me. So I avoid packaging these classes.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;&lt;br /&gt;Accessing EJB 3 Web service&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;After successful deployment you can access the web service as follows:&lt;br /&gt;&lt;br /&gt;http://hostname:port/ejb-name/web-service-name?wsdl&lt;ejbname&gt;&lt;web&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href="http://localhost:7001/PlaceBidBean/PlaceBidBeanService?wsdl"&gt;http://localhost:7001/PlaceBidBean/PlaceBidBeanService?wsdl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/web&gt;&lt;/ejbname&gt;&lt;br /&gt;&lt;br /&gt;Hope this helps.&lt;br /&gt;&lt;br /&gt;You can download the working examples from &lt;a href="http://debupanda.blogspot.com/2008/04/ejb-3-in-action-code-examples-on.html"&gt;here.&lt;/a&gt; Chapter 15 contains web services example.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1673747823737085810?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1673747823737085810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1673747823737085810' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1673747823737085810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1673747823737085810'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/06/ejb-3-stateless-bean-web-service-in.html' title='EJB 3 Stateless bean Web service in WebLogic Server'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-8547044545647983078</id><published>2008-06-20T04:02:00.000-07:00</published><updated>2008-06-20T10:32:27.636-07:00</updated><title type='text'>EJB 3, JPA, Web Services and Spring Examples for WebLogic Server</title><content type='html'>&lt;p class="MsoNormal"&gt;Finally I was able to complete porting of all book examples of EJB 3 In Action to run on WebLogic Server.&lt;br /&gt;&lt;br /&gt;You can download these from &lt;a href="http://debupanda.googlepages.com/weblogic10_codexamples.zip"&gt;&lt;span style="text-decoration: underline;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;These contain a host of examples on EJB 3, JPA, Web Services and Spring Framework. Now we have complete examples for four servers: &lt;a href="http://manning.com/panda/codeexamples-javaeesdk.zip"&gt;Glassfish&lt;/a&gt;, &lt;a href="http://manning.com/panda/codeexamples-oracleAS.zip"&gt;OC4J&lt;/a&gt;,  &lt;a href="http://debupanda.googlepages.com/weblogic10_codexamples.zip"&gt;WebLogic&lt;/a&gt; and &lt;a href="http://www.manning-source.com/books/panda/codeexamples-jbossas.zip"&gt;JBoss&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Note that I tested the examples with an Oracle XE database. For simplicity, the examples are configured to use the exampleServer and default PointBase DB that is shipped with it. However some of these examples will properly not on PointBase because it does not support DB Sequence. &lt;/p&gt;    &lt;p class="MsoNormal"&gt;All chapters have the common domain model based on our famous ActionBazaar Application&lt;br /&gt;&lt;/p&gt;                      &lt;p class="MsoNormal"&gt;Chapter 5: EJB 3 Interceptors, Timers&lt;br /&gt;Chapter 8: O-R Mapping Annotations&lt;br /&gt;Chapter 9: Entity Manager API&lt;br /&gt;Chapter 10: JPQL and Native SQL Queries&lt;br /&gt;Chapter 11: &lt;span style=""&gt; &lt;/span&gt;O-R Mapping with XML&lt;br /&gt;Chapter 12: &lt;span style=""&gt; &lt;/span&gt;EM API from Web Tier, Java SE&lt;br /&gt;Chapter 13: &lt;span style=""&gt; &lt;/span&gt;Extended Persistence Context&lt;br /&gt;Chapter 15: &lt;span style=""&gt; &lt;/span&gt;EJB 3 Web services&lt;br /&gt;Chapter 16: &lt;span style=""&gt; &lt;/span&gt;Spring with EJB 3 and JPA&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Please try these out and let me know if you find any bugs!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-8547044545647983078?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/8547044545647983078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=8547044545647983078' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/8547044545647983078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/8547044545647983078'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/06/ejb-3-jpa-web-services-and-spring.html' title='EJB 3, JPA, Web Services and Spring Examples for WebLogic Server'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-6274070025051306201</id><published>2008-06-02T04:22:00.000-07:00</published><updated>2008-06-02T15:58:44.467-07:00</updated><title type='text'>EJB 3 Dependency Injection Refcard</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://refcardz.dzone.com/refcardz/dependency-injection-in-ejb3"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Mv8xjdIVnWw/SER6-OPu0nI/AAAAAAAAABc/6mxaUu-0j4M/s320/ejb3online_final_103x133.png" alt="" id="BLOGGER_PHOTO_ID_5207422278541693554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;span title="This table lists business credit card transactions added to the expense report."&gt;&lt;/span&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;I wrote a Reference Card on &lt;a href="http://refcardz.dzone.com/refcardz/dependency-injection-in-ejb3"&gt;EJB 3 Dependency Injection&lt;/a&gt; for Developer Zone. This is a quick reference card that describes metadata annotations and XML descriptor elements that you use for injecting resources and services.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;You can access this reference card for free from Developer Zone at http://refcardz.dzone.com/refcardz/dependency-injection-in-ejb3&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-6274070025051306201?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/6274070025051306201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=6274070025051306201' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/6274070025051306201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/6274070025051306201'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/06/ejb-3-dependency-injection-refcard.html' title='EJB 3 Dependency Injection Refcard'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Mv8xjdIVnWw/SER6-OPu0nI/AAAAAAAAABc/6mxaUu-0j4M/s72-c/ejb3online_final_103x133.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-4852837400287351751</id><published>2008-04-29T05:26:00.000-07:00</published><updated>2008-04-29T05:41:01.546-07:00</updated><title type='text'>EJB 3 In Action Code Examples on WebLogic 10</title><content type='html'>&lt;p class="MsoNormal"&gt;In my &lt;a href="http://debupanda.blogspot.com/2008/03/ejb-3-in-action-examples-on-weblogic-10.html"&gt;previous blog&lt;/a&gt;, I made the code examples available for first four chapters of &lt;a href="http://manning.com/panda"&gt;EJB 3 In Action&lt;/a&gt; for WebLogic 10. However I did not provide you instructions to run these examples (Chapter 2-4)  for WebLogic 10. &lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;Chapter 2 example has a stateless session bean, stateful session bean, an MDB and a JPA Entity. The JPA persistence unit requires a JDBC DataSource and the Stateful/MDB uses a JMS queue.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt; Chapter 3 depends upon a JDBC DataSource and Chapter 4 uses JDBC DataSource and a JMS Queue.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;I’ve provided a build script to configure these resources on the default examplesServer that gets created when you install WebLogic 10.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;Download examples from &lt;a href="http://debupanda.googlepages.com/wls-chapter1-4.zip"&gt;here&lt;/a&gt; and unzip to a directory say      c:\ejb3inaction\weblogic&lt;/li&gt;&lt;/ol&gt;    &lt;ol style="margin-top: 0in;" start="2" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;Set      the environment variables for your server as follows: &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ol&gt;    &lt;p class="MsoNormal" style="margin-left: 0.25in;"&gt;&lt;span style=""&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;%BEA_HOME%/wlserver_10.0/samples/domains/wl_server/setExamplesEnv&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;ol style="margin-top: 0in;" start="3" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;&lt;span style="font-family:arial;"&gt;Change to your      directory to the directory&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="margin-left: 0.25in; color: rgb(51, 51, 255);font-family:courier new;"&gt;cd c:\ejb3inaction\weblogic&lt;span style="font-size:10;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;   ant CreateResources&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;   &lt;/span&gt;This will configure resources such as JDBC DataSource, JMS Connection Factory, Queues, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;  &lt;/span&gt;4. To deploy the application, you can use WLS Admin Console. If you prefer you can use ant to deploy the application for a specific chapter. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    cd chapter2&lt;/span&gt;&lt;o:p style="color: rgb(51, 51, 255);"&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    ant  &lt;/span&gt;&lt;o:p style="color: rgb(51, 51, 255);"&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="4" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;To run the application      client:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; color: rgb(51, 51, 255);"&gt;&lt;span style=""&gt;ant run&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  Hope this helps! I'm working on porting rest of the examples and will make these available sooner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-4852837400287351751?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/4852837400287351751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=4852837400287351751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4852837400287351751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4852837400287351751'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/04/ejb-3-in-action-code-examples-on.html' title='EJB 3 In Action Code Examples on WebLogic 10'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-4367199557596687043</id><published>2008-04-17T04:21:00.000-07:00</published><updated>2008-04-17T04:54:21.628-07:00</updated><title type='text'>Diagnosing Production Java applications with AD4J</title><content type='html'>One of my applications that uses EJB 3 and JPA was running much slower today and I had no clue what was going on. It is a very simple application to manage service requests. When I was trying to update some data for a service request – it was taking ever. Also searching of service requests by some search criteria was taking much longer than it does.&lt;br /&gt;&lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;So I thought I would give Oracle AD4J a spin and will try to find out what is going! It is good that Oracle AD4J does not require any code changes in application, because it does not use byte code instrumentation. Nor does it require to restart/redeploy the application – so it was a perfect fit.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;And it really helped diagnose the problem by me get into bottom of the issues. It was indeed a DB issue as I had initially suspected.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;I will not bore you with installation and configuration steps of AD4J – rather I will outline how AD4J helped me diagnose the issue.&lt;br /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;h2 style="color: rgb(0, 0, 153);"&gt;Finding the Offending Thread&lt;/h2&gt;    &lt;p class="MsoNormal"&gt;As soon as I logon to AD4J console and clicked to view active threads – it showed all threads with the correct state and I saw one thread is with status “&lt;span style="color: rgb(0, 0, 153);"&gt;DBWait”&lt;/span&gt;.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Mv8xjdIVnWw/SAc0TF61rFI/AAAAAAAAAA4/ERed8gTOU4g/s1600-h/image001.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_Mv8xjdIVnWw/SAc0TF61rFI/AAAAAAAAAA4/ERed8gTOU4g/s320/image001.png" alt="" id="BLOGGER_PHOTO_ID_5190174598178909266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;That gave me an indication that something going fishy in the database request from from JPA provider. &lt;/p&gt;    &lt;h2 style="color: rgb(0, 0, 153);"&gt;Finding DB issue&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;When I clicked on &lt;span style="color: rgb(0, 0, 153);"&gt;DB Wait&lt;/span&gt; link to view details, it became clear that the transaction is running into some row lock contention with another user session.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Mv8xjdIVnWw/SAc1CV61rII/AAAAAAAAABM/tLwIAB05Tys/s1600-h/image003.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Mv8xjdIVnWw/SAc1CV61rII/AAAAAAAAABM/tLwIAB05Tys/s320/image003.png" alt="" id="BLOGGER_PHOTO_ID_5190175409927728258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 style="color: rgb(0, 0, 153);"&gt;Finding the SQL statement&lt;/h2&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;o:p style="color: rgb(0, 0, 153);"&gt;&lt;/o:p&gt;Interestingly it allowed to me to view the SQL Statement that is taking forever by clicking the SQL hash. My application uses JPA 1.0 and I could view the SQL statements causing problem without increasing the log level from my JPA provider as in the following figure:&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Mv8xjdIVnWw/SAc1yV61rJI/AAAAAAAAABU/hXOdAPa15s4/s1600-h/image005.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Mv8xjdIVnWw/SAc1yV61rJI/AAAAAAAAABU/hXOdAPa15s4/s320/image005.png" alt="" id="BLOGGER_PHOTO_ID_5190176234561449106" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;It also helped me find the other session that held the lock. Apparently we found that it was a batch process that was hanging for some reasons. After the hanging session was killed the application ran like a champ again!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Also I found that the JPQL query for retrieving SRs was running slower because of some missing indexes on the column  and it was making a full table scan. Nice, it also AD4J allows to run explain for sql statements. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h1 style="color: rgb(0, 0, 153);"&gt;Downloading AD4J&lt;/h1&gt;    &lt;p class="MsoNormal"&gt;You can download AD4J from OTN (&lt;a href="http://www.oracle.com/technology/software/products/oem/htdocs/jade.html"&gt;http://www.oracle.com/technology/software/products/oem/htdocs/jade.html&lt;/a&gt;) &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;h2 style="color: rgb(0, 0, 153);"&gt;Installing AD4J Console and agents&lt;/h2&gt;    &lt;p class="MsoNormal"&gt;Installing AD4J Console is easy. You can follow this &lt;a href="http://download.oracle.com/docs/cd/B16240_01/doc/install.102/e11085/toc.htm"&gt;guide&lt;/a&gt; to do this installation of AD4J Console and agent.&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;After you deploy the agent you are good to go. Your JVM for application server will be automatically discovered in the console.&lt;br /&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;The AD4J agent is a WAR file that needs to be deployed to the server. You can follow the instructions in the install guide to install the agent in favorite application server. I was using my favorite container OC4J,&lt;span style="font-family:Wingdings;"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt; however it supports BEA WebLogic, IBM Websphere, JBoss, and Tomcat. You can run AD4J also with standalone Java. &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;If you want to trace the problem to the DB tier you can install the DB Agent. You can follow the instructions in this &lt;a href="http://download.oracle.com/docs/cd/B16240_01/doc/install.102/e11085/chapter8.htm#CEGFAIFJ"&gt;guide&lt;/a&gt;.&lt;br /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I will play around with AD4J and blog little more about its feature in future. In the meantime you can review it's usage scenario documented in &lt;a href="http://www.oracle.com/technology/products/oem/pdf/oraclead4j_usagescenarios.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-4367199557596687043?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/4367199557596687043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=4367199557596687043' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4367199557596687043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4367199557596687043'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/04/diagnosing-production-java-applications.html' title='Diagnosing Production Java applications with AD4J'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Mv8xjdIVnWw/SAc0TF61rFI/AAAAAAAAAA4/ERed8gTOU4g/s72-c/image001.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-6832303905847670842</id><published>2008-04-15T09:23:00.000-07:00</published><updated>2008-04-15T09:26:11.276-07:00</updated><title type='text'>My interview @Java Lobby</title><content type='html'>Java Lobby just published &lt;a href="http://java.dzone.com/news/interview-debu-panda-author-ej"&gt;my interview&lt;/a&gt; with them. You can read this &lt;a href="http://java.dzone.com/news/interview-debu-panda-author-ej"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-6832303905847670842?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/6832303905847670842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=6832303905847670842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/6832303905847670842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/6832303905847670842'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/04/my-interview-java-lobby.html' title='My interview @Java Lobby'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-208326583993337112</id><published>2008-03-31T01:52:00.000-07:00</published><updated>2008-03-31T07:41:36.201-07:00</updated><title type='text'>Using JMX to Start/Stop Message Driven Bean</title><content type='html'>&lt;p class="MsoNormal"&gt;OC4J 10.1.3.x allows users to start/stop MDBs dynamically without having recycle container or application. &lt;/p&gt;    &lt;p class="MsoNormal"&gt;For example, you can disable an MDB upon start/deployment by adding enabled="false" in your orion-ejb-jar.xml as follows&lt;br /&gt;&lt;br /&gt;&amp;lt;message-driven-deployment name="MessageLogger" enabled="false"&amp;gt;&lt;br /&gt;&lt;br /&gt;MDB will not start when the application is deployed/started.&lt;br /&gt;&lt;br /&gt;You can use Application Server Control to start the MDB later as shown in the following  screen shot:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Mv8xjdIVnWw/R_Cne2GLqaI/AAAAAAAAAAw/VE4pdBJgnpM/s1600-h/MDB.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Mv8xjdIVnWw/R_Cne2GLqaI/AAAAAAAAAAw/VE4pdBJgnpM/s320/MDB.jpg" alt="" id="BLOGGER_PHOTO_ID_5183827319462799778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You may want to perform this operation from command line. You can download t&lt;a href="http://debupanda.googlepages.com/StartStopMdb.zipp"&gt;his zip file &lt;/a&gt;that contains code to stop/start MDB using JMX.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Unpackage the zip and change ant-oracle.properties file to change your URL, userid and password&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Set  ORACLE_HOME to the directory where OC4J installed&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;To start your MDB:&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;       &lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;ant start -DappName=ejb30mdb -DejbModule=ejb30mdb-ejb -DmdbName MessageLogger&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;To stop it&lt;/li&gt;&lt;/ul&gt;&lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;            ant stop -DappName=ejb30mdb -DejbModule=ejb30mdb-ejb -DmdbName MessageLogger&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Following is the code snippet from the Java Class that perform the stop/start operation:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;StartStopMDB mdb = new StartStopMDB();&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;        &lt;/span&gt;&lt;span style="font-size:85%;"&gt;try {&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;             &lt;/span&gt;&lt;span style="font-size:85%;"&gt;            mdb.connect("service:jmx:"+args[0], args[1] ,args[2] );&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            System&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.out.println(mdb);&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;            System.out.printf("Client connected? %s\n",mdb.isConnected());&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;            MBeanServerConnection mbs = jmxCon.getMBeanServerConnection();&lt;/span&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;            String objName =     "oc4j:j2eeType=MessageDrivenBean,EJBModule=\""+args[4]&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                                    +"\",J2EEApplication="+args[3]+",J2EEServer=standalone,name=\""+args[5]+"\"";&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                        &lt;/span&gt;&lt;span style="font-size:85%;"&gt;            ObjectName myMDBObjectName = new ObjectName(objName);&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;            MessageDrivenBeanMBeanProxy MDBMBean =&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                            (MessageDrivenBeanMBeanProxy)MBeanServerInvocationHandler.newProxyInstance(mbs,&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                            myMDBObjectName, MessageDrivenBeanMBeanProxy.class, false);&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                        if (args[6].equals("start"))&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;               &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                {&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;              &lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                    System.out.println("Starting up MDB: "+args[5] +" in ejb module:"+args[4]+&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                                                                                                                            " in application name:"+args[3]);&lt;/span&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;           &lt;/span&gt;&lt;span style="font-size:85%;"&gt;     &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                        MDBMBean.start();&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                        System.out.println("Successfully started MDB!");&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;               &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                }&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                            else if (args[6].equals("stop")) {&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;               &lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                 &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                                            System.out.println("Stopping MDB: "+args[5] +&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                                                            " in ejb module:"+args[4]+ " in application name:"+args[3]);&lt;/span&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                 &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                                            MDBMBean.stop();&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                 &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                                        System.out.println("Successfully started MDB!");&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                                    }&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                            mdb.close();&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;        &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                } catch (Exception e) {&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                                                e.printStackTrace();&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;        &lt;/span&gt;&lt;span style="font-size:85%;"&gt;                                                                        }&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;    &lt;/span&gt;&lt;span style="font-size:85%;"&gt;        }&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 51, 255);" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;Hope this helps!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-208326583993337112?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/208326583993337112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=208326583993337112' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/208326583993337112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/208326583993337112'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/03/using-jmx-to-startstop-message-driven.html' title='Using JMX to Start/Stop Message Driven Bean'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Mv8xjdIVnWw/R_Cne2GLqaI/AAAAAAAAAAw/VE4pdBJgnpM/s72-c/MDB.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-8712161121222538239</id><published>2008-03-26T10:35:00.000-07:00</published><updated>2008-03-26T10:49:01.912-07:00</updated><title type='text'>Using TopLink Essentials as the JPA Provider for WebLogic 10</title><content type='html'>A couple of weeks ago, one customer asked me for instructions for using TopLink Essentials as the JPA provider with WebLogic 10. I thought I would give it a try as I’m working on migrating &lt;a href="http://manning.com/panda"&gt;my book &lt;/a&gt;examples to WebLogic 10.&lt;br /&gt;&lt;br /&gt;First, you have to download TopLink Essentials either from &lt;a href="http://www.oracle.com/technology/products/ias/toplink/jpa/download.html"&gt;OTN&lt;/a&gt; or &lt;a href="https://glassfish.dev.java.net/javaee5/persistence/entity-persistence-support.html"&gt;Glassfish&lt;/a&gt; web site.&lt;br /&gt;I packaged the toplink-essentals.jar, toplink-essentials-agent.jar in the &lt;span style="font-style: italic; color: rgb(102, 0, 204);"&gt;l&lt;span style="color: rgb(102, 51, 255);"&gt;ib&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);"&gt; &lt;/span&gt;directory for the EAR so the structure of EAR looked like as follows:&lt;br /&gt;&lt;br /&gt;chapter2-ejb.jar&lt;br /&gt;lib/toplink-essentials.jar&lt;br /&gt;lib/toplink-essentials-agent.jar&lt;br /&gt;&lt;br /&gt;I specified provider &lt;span style="color: rgb(102, 51, 255);font-family:courier new;" &gt;class oracle.toplink.essentials.PersistenceProvider&lt;/span&gt;&lt;br /&gt;in my persistence.xml packaged in my EJB  module as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;persistence-unit name="actionBazaar"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;provider&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);font-family:courier new;" &gt;class oracle.toplink.essentials.PersistenceProvider&lt;/span&gt;&lt;span style="color: rgb(102, 0, 204);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;/provider&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;      &amp;lt;property name="toplink.ddl-generation" value="create-tables"&amp;gt;  &amp;lt;property name="toplink.ddl-generation.output-mode" value="database"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you want to use container managed entity manager with WebLogic’s JTA transaction manager you have to create your server platform class by extending oracle.toplink.essentials.transaction.JTATransactionController  as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;package debu.weblogic;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;import javax.transaction.TransactionManager;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;import oracle.toplink.essentials.transaction.JTATransactionController;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;public class WebLogicTransactionController extends JTATransactionController&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;    private static final String WLS_TRANSACTION_MANAGER_NAME =     "javax.transaction.TransactionManager";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;public WebLogicTransactionController(){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;protected TransactionManager acquireTransactionManager() throws Exception {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;      TransactionManager tm = (TransactionManager)jndiLookup(WLS_TRANSACTION_MANAGER_NAME);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;      return tm;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you might have seen already that I’ve specified this class as the target-server property in persistence class.&lt;br /&gt;&lt;br /&gt;You can package this class as a part of your application in the same EAR file where you packaged the TopLink Essentials jar files and the entity classes.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);font-size:130%;" &gt;Using TopLink 11 with WebLogic 10&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you are using TopLink 11 preview (or EclipseLink) you do not have to create your own server platform class but you can use the server platform shipped in toplink.jar for WebLogic 10.&lt;br /&gt;&lt;br /&gt;Here is how your persistence.xml look like when you use TopLink 11.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;persistence-unit name="actionBazaar"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;provider&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt; oracle.toplink.PersistenceProvider&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;/provider&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;jta-data-source&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;jdbc/ActionBazaarDS&amp;lt;/jta-data-source&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;      &amp;lt;property name="toplink.ddl-generation" value="create-tables"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;     &amp;lt;property name="toplink.ddl-generation.output-mode" value="database"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;     &amp;lt;property name="toplink.target-server" value="WebLogic_10"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note that you have to package toplink-ojdbc.jar in addition to toplink.jar and antlr.jar if you are using Oracle DB as the underlying database.&lt;br /&gt;&lt;br /&gt;Hope this helps.&lt;br /&gt;Need to go to bed, feeling sleepy now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-8712161121222538239?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/8712161121222538239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=8712161121222538239' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/8712161121222538239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/8712161121222538239'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/03/using-toplink-essentials-as-jpa.html' title='Using TopLink Essentials as the JPA Provider for WebLogic 10'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-8440701574817853279</id><published>2008-03-23T21:43:00.001-07:00</published><updated>2008-03-24T08:10:02.075-07:00</updated><title type='text'>EJB 3 In Action Examples on WebLogic 10</title><content type='html'>&lt;div&gt;Several readers requested me to provide the code examples of &lt;a href="http://manning.com/panda"&gt;EJB 3 in Action &lt;/a&gt;for BEA WebLogic 10. We have earlier provided examples for &lt;a href="http://manning.com/panda/codeexamples-javaeesdk.zip"&gt;Glassfish&lt;/a&gt;, &lt;a href="http://manning.com/panda/codeexamples-oracleAS.zip"&gt;Oracle Application Server&lt;/a&gt; and &lt;a href="http://www.rahmannet.net/downloads/JBoss_Support.zip"&gt;JBoss&lt;/a&gt;. I spent sometime last weekend to port these examples to Weblogic 10. You can download examples for &lt;a href="http://debupanda.googlepages.com/wls-chapter1-4.zip"&gt;first four chapters&lt;/a&gt;. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;These examples have been modified to run on the default examplesServer on the Weblogic in the default server domain. To run the examples, first the set the environment variables by the running the &lt;span style="color: rgb(51, 51, 255);"&gt;SetExamplesEnv&lt;/span&gt; script in $BEA_HOME/wlserver_10.0/samples/domains/wl_server directory.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;For example, if you are running on Windows and you have installed WebLogic 10 in C:\bea\wlserver_10.0\ directory you can run the script as follows:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; C:\bea\wlserver_10.0\samples\domains\wl_server\SetExamplesEnv.bat&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you unzipped the samples in c:\WLS examples change directory to chapter 1 and you can build and deploy as follows: &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;cd c:\WLS examples\chapter1&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ant&lt;/span&gt;                - -&gt; attempts to build and deploy in the examplesServer &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;To run the example:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ant run&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;You must be wondering what are the changes that I made in the to run on WebLogic 10. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;Java EE promises write once run anywhere !&lt;/em&gt; Then why I had to make changes in the code?&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Every application server has its minor quirks here and there and code changes were very minimal. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;I could not make dependency injection work in the application client code in WebLogic 10, not sure they support it. So I had to change thick client to make use JNDI lookup instead. I modified the Session bean code to define a global JNDI name for the HelloUser session bean as follows: &lt;span style="color: rgb(51, 51, 255);"&gt;@Stateless(mappedName="HelloUser") &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class HelloUserBean implements HelloUser&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; I modified the client code to lookup the remote EJB as follows: &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Context ctx = new InitialContext(); helloUser = (HelloUser) ctx.lookup("HelloUser#ejb3inaction.example.HelloUser");&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;As you would expect, I updated the jndi.properties in the client jar file to have right environment properties for WebLogic as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;java.naming.provider.url=t3://localhost:7001&lt;/span&gt;&lt;br /&gt;That's it ..&lt;br /&gt;&lt;br /&gt;In the next blog entry, I will discuss the code changes the instructions to run Chapter 2-4 and outline changes made to run JPA and MDB examples.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-8440701574817853279?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/8440701574817853279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=8440701574817853279' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/8440701574817853279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/8440701574817853279'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/03/ejb-3-in-action-examples-on-weblogic-10.html' title='EJB 3 In Action Examples on WebLogic 10'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-2042515200141070538</id><published>2008-01-23T20:40:00.000-08:00</published><updated>2008-01-23T20:56:38.032-08:00</updated><title type='text'>EJB 3.1 New features</title><content type='html'>Reza Rehman, my co-author of &lt;a href="http://manning.com/panda"&gt;EJB 3 in Action &lt;/a&gt;has authored an article on EJB 3.1 new features.&lt;br /&gt;&lt;br /&gt;To summarize the major changes that are planned in EJB 3.1 are:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Singleton Beans. Using a new @Singleton annotation will support&lt;br /&gt;this.&lt;/li&gt;&lt;li&gt;Optional interfaces similar to web services. Container will generate&lt;br /&gt;the interface for you. Anyway IMHO it’s always good practice to build an&lt;br /&gt;interface your bean&lt;/li&gt;&lt;li&gt;Stateful Web services using stateful session beans&lt;br /&gt;EJB &lt;/li&gt;&lt;li&gt;Timers to include cron timers. Just to note that OC4J already supports cron&lt;br /&gt;timer as an extension.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Note that Java Persistence API is now worked under a completely new specification.&lt;br /&gt;&lt;br /&gt;You can read the article at &lt;a href="http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB3-1"&gt;http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB3-1&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-2042515200141070538?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/2042515200141070538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=2042515200141070538' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2042515200141070538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2042515200141070538'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/01/ejb-31-new-features.html' title='EJB 3.1 New features'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-437595192073164746</id><published>2008-01-07T04:51:00.000-08:00</published><updated>2008-01-07T07:36:42.864-08:00</updated><title type='text'>Managing JBoss Application Server from Oracle Enterprise Manager Grid Control</title><content type='html'>Although I would like that you use Oracle Application Server always I realize that heterogeneous platforms are reality today :) You may have JBoss application server in your environment and you may want to monitor that from Grid Control. Oracle provides a management plug-in for Grid Control to monitor health and performance of JBoss Application Server.&lt;br /&gt;In this blog entry, I will outline the steps to discover JBoss Application Server from Grid Control.&lt;br /&gt;Let us assume that you have installed JBoss Application Server in a server named dpanda-pc in c:\jboss\jboss4.0.2 directory (call it JBoss_Home), your agent is running on a remote host named dpanda-lap.&lt;br /&gt;1. Login to Grid Control 10g R4&lt;br /&gt;2. Click on Application Servers Menu item&lt;br /&gt;3. Select Add -&gt; JBoss Application Server and click on GO&lt;br /&gt;4. Enter name of the server where JBoss is running as Application Server Host&lt;br /&gt;5. Enter the JBoss Home -&gt; the top level directory where JBoss is installed. Note this is not required if you are using Agent installed on a separate host.&lt;br /&gt;6. You have to supply userid/password only if you have enabled security for JMX Console. See &lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=SecureTheJmxConsole"&gt;http://wiki.jboss.org/wiki/Wiki.jsp?page=SecureTheJmxConsole&lt;/a&gt; how you can make JBoss Console secured. This credential will be used by Agent to make JMX connection to gather health/statistics.&lt;br /&gt;7. You can use a remote Intelligent Agent to discover JBoss. If so you have to appropriately select the check box as depicted in the following figure figure:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_Mv8xjdIVnWw/R4Ii_DwUcxI/AAAAAAAAAAc/OPJhr2T9qTo/s1600-h/Slide1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5152719390400344850" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_Mv8xjdIVnWw/R4Ii_DwUcxI/AAAAAAAAAAc/OPJhr2T9qTo/s320/Slide1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Agent requires the JBoss JMX client jar files to make JMX connection to JMS.&lt;br /&gt;&lt;br /&gt;Hence you have to copy the following files to a directory e.g. c:\jboss\lib and make it available to the Agent as Library Path:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;jboss-management.jar from JBoss_Home/server/&lt;conf&gt;/lib&lt;/li&gt;&lt;br /&gt;&lt;li&gt;jnp-client.jar from JBoss_Home/client&lt;/li&gt;&lt;br /&gt;&lt;li&gt;jbossall-client.jar from JBoss_Home/client&lt;/li&gt;&lt;br /&gt;&lt;li&gt;dom4j.jar from JBoss_Home/lib &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Note: Make sure that you restart IA otherwise the current status of JBoss Servers will not be reported correctly post discovery.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8. You have to supply the JNDI port for JBoss server and click next&lt;br /&gt;&lt;br /&gt;9. Then you have to supply the credentials for the server/host where JBoss is running&lt;br /&gt;&lt;br /&gt;10. It will provide a list of the JBoss partitions and/or Servers that it found in the host and you can select the servers that you want to manage and then click Next&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After you confirm at the end of wizard , the JBoss servers will be discovered and you can monitor JBoss Application Server from Grid Control.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-437595192073164746?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/437595192073164746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=437595192073164746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/437595192073164746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/437595192073164746'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2008/01/managing-jboss-application-server-from.html' title='Managing JBoss Application Server from Oracle Enterprise Manager Grid Control'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Mv8xjdIVnWw/R4Ii_DwUcxI/AAAAAAAAAAc/OPJhr2T9qTo/s72-c/Slide1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-2839040534084718456</id><published>2007-11-12T05:43:00.000-08:00</published><updated>2007-11-12T05:58:51.623-08:00</updated><title type='text'>At Oracle Open World in San Francisco</title><content type='html'>Oracle Open World started yesterday. Today I've a session on Java EE with my coworkers Dan Hynes and Dana Singleterry. It is at 3:15pm at Hilton San Francisco. We will present how to build Java EE 5 applications and deploy and manage with Oracle Application Server. If you have a copy of &lt;a href="http://manning.com/panda"&gt;EJB 3 In Action&lt;/a&gt; then you can bring it to the session and I can sign it if you want.&lt;br /&gt;&lt;br /&gt;I will be hanging around the Oracle Enterprise Manager (Middleware and Apps management booth J04, J06, etc) booths in the demo ground where we are demoing our new product Oracle Application Diagnostics for Java (Oracle AD4J) that help diagnose problems in production environment. Please stop by and learn how Oracle AD4J makes your life simple in diagnosing problems in your production J2EE applications. You can also see some cool demos on SOA management, Application Server Config and Provisioning, SLA management and many more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-2839040534084718456?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/2839040534084718456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=2839040534084718456' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2839040534084718456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2839040534084718456'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/11/at-oracle-open-world-in-san-francisco.html' title='At Oracle Open World in San Francisco'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-4135254401441750316</id><published>2007-11-02T01:25:00.000-07:00</published><updated>2007-11-02T01:41:14.158-07:00</updated><title type='text'>Spring and EJB 3: All-Star Team or Neighbors with Good Fences</title><content type='html'>I presented a &lt;a href="http://www.indicthreads.com/content/conference/presentations/2007/EJb3%20Spring.pdf"&gt;Spring / EJB 3 Comparison/Integration talk &lt;/a&gt;at the IndicThreads Java conference in Poona. It was very well received. Here is the &lt;a href="http://www.indicthreads.com/content/conference/presentations/2007/EJb3%20Spring.pdf"&gt;link &lt;/a&gt;to the presentation for your reading pleasure.&lt;br /&gt;&lt;br /&gt;It is primarily based on the contents on our book &lt;a href="http://manning.com/"&gt;EJB 3 In Action &lt;/a&gt;and my research with my coauthor Reza Rehman on this topic.&lt;br /&gt;&lt;br /&gt;All EJB 3 books in the market ignore existence Spring considering it as a competitor. Even the classic Java Persistence on Hibernate says nothing about Spring framework. However EJB 3 In Action takes a pragmatic approach and tries to recommend whenever Spring makes sense. Although Spring and EJB 3 are viewed as competitors it can be used complementary technologies and a whole chapter of EJB 3 In Action is dedicated to this integration story. So why wait .. buy a copy for yourself :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-4135254401441750316?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/4135254401441750316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=4135254401441750316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4135254401441750316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4135254401441750316'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/11/spring-and-ejb-3-all-star-team-or.html' title='Spring and EJB 3: All-Star Team or Neighbors with Good Fences'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1997534189556206508</id><published>2007-10-29T23:02:00.000-07:00</published><updated>2007-10-29T23:14:06.763-07:00</updated><title type='text'>Using Dependency Injection from Web Container in OC4J 10.1.3.x</title><content type='html'>OC4J 10.1.3.1 and later supports dependency injection from web container. I've seen this question from many customers via email or in OTN forum that using dependency injection from web container generates NPE. If you are running into such problems, make sure that you have specified version as "2.5" in your deployment descriptor (web.xml) as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&amp;lt;?xml version = '1.0'?&amp;gt;?&lt;br /&gt;&amp;lt;?web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"&lt;br /&gt;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&amp;gt;?&lt;br /&gt;...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1997534189556206508?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1997534189556206508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1997534189556206508' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1997534189556206508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1997534189556206508'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/10/using-dependency-injection-from-web.html' title='Using Dependency Injection from Web Container in OC4J 10.1.3.x'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-8237422477655721630</id><published>2007-09-03T23:29:00.000-07:00</published><updated>2007-09-03T23:57:09.123-07:00</updated><title type='text'>IndicThread Java Conference</title><content type='html'>&lt;a href="http://conference.indicthreads.com/images/java-pune-india-07/speaker-conference-on-java-6.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand" alt="" src="http://conference.indicthreads.com/images/java-pune-india-07/speaker-conference-on-java-6.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I will be speaking at the &lt;a href="http://conference.indicthreads.com/"&gt;IndicThread Java Conference in Pune&lt;/a&gt;, India (Oct 26-27). Two of my &lt;a href="http://conference.indicthreads.com/content/view/26/30/"&gt;talks &lt;/a&gt;on (Spring / EJB 3 Integration) and SOA management has been accepted. If you are in the Indian subcontinent then it's the only independent Java conference and I highly recommend this conference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-8237422477655721630?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/8237422477655721630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=8237422477655721630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/8237422477655721630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/8237422477655721630'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/09/indicthread-java-conference.html' title='IndicThread Java Conference'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-3325909013671660956</id><published>2007-07-24T07:34:00.000-07:00</published><updated>2007-07-24T07:42:39.195-07:00</updated><title type='text'>More praises for EJB 3 In Action</title><content type='html'>EJB 3 In Action gets Five STARs rating from Cicero Zandoná of JavaLobby.&lt;br /&gt;Here is some excerpt from his review:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;If you want an EJB 3.0 book to read from cover-to-cover this is the one. You will learn how to create an EJB application, the concepts related to them and receive a lot of useful advice.&lt;br /&gt;I really can't give this book less then five "stars". &lt;/em&gt;&lt;br /&gt;&lt;p&gt;Here is an interesting comment from the book:&lt;/p&gt;&lt;p&gt;&lt;em&gt;One of the authors, Debu Panda is a Lead Product Manager of the Oracle Application Server development team, and I was afraid this could lead to a biased book. Fortunately this doesn't happen at all, he is completely impartial along the book and always warns the reader about vendor-dependent features.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;I'm really happy that everyone seems to like the Sadhu story that I started the book with. Here is what Cicero puts in his review:&lt;/p&gt;&lt;p&gt;&lt;em&gt;In an unusual beginning for a technical book, the authors start talking about ladybugs, elephants and cows (one of the authors name is Panda by the way). But I can't think in a more gentle and creative way to illustrate the specification evolution than the analogy they made (you can read the tale in &lt;/em&gt;&lt;a href="http://www.javalobby.org/articles/ejb3-in-action-meera/" rel="nofollow"&gt;&lt;em&gt;Meera's&lt;/em&gt;&lt;/a&gt;&lt;em&gt; review).&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Read the detailed review at &lt;a href="http://www.javalobby.org/articles/ejb3-in-action-cicero/" target="_blank"&gt;JavaLobby&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-3325909013671660956?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/3325909013671660956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=3325909013671660956' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3325909013671660956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3325909013671660956'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/07/more-praises-for-ejb-3-in-action.html' title='More praises for EJB 3 In Action'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-5739385609752254045</id><published>2007-07-05T06:01:00.000-07:00</published><updated>2007-07-06T05:20:40.626-07:00</updated><title type='text'>Automatically Executing a Client Application Archive</title><content type='html'>&lt;p&gt;&lt;br /&gt;Many applications have a requirement that they want to automatically execute an application client archive(CAR) packaged as a part of enterprise application (EAR) when server starts up or an application is restarted. This is a Java EE 5 standard compliant alternative to Startup class about which I blogged about 2 and half years back!&lt;br /&gt;&lt;br /&gt;In this article, I will outline steps to do this in OC4J. &lt;/p&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Develop and compile your application client class. This class must contain a main method that will be called by your server during startup. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Create a &lt;span style="font-family:courier new;color:#3333ff;"&gt;META-INF/Manifest.mf&lt;/span&gt; file for the application-client, for example&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;Manifest-Version: 1.0&lt;br /&gt;Main-Class: OracleASStartup&lt;/span&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Create a deployment descriptor for the application client (application-client.xml) as follows:&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&amp;lt;application-client&amp;gt;&lt;br /&gt;&amp;lt;display-name&amp;gt;OracleASStartup&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;lt;/application-client&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Create the application client archive (CAR) file for your startup class with the above Manifest and deployment descriptor.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Create an EAR file for the application client module with the an OC4J-specific deployment descriptor &lt;span style="color:#3366ff;"&gt;orion-application.xml&lt;/span&gt; as follows:&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&amp;lt;orion-application&amp;gt;&lt;br /&gt;&amp;lt;client-module path="startup-client.jar" start="true" user="anonymous" &amp;gt;&lt;br /&gt;&amp;lt;/orion-application &amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Build your EAR and deploy your application with auto start set to "true" as follows in the server.xml&lt;span style="color:#3366ff;"&gt;:&amp;lt;application name="startup"&lt;br /&gt;path="../applications\startup.ear" parent="default" start="true" &amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;Whenever your application is deployed or if you restart your server, the application client will be executed automatically!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Hope this helps! &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-5739385609752254045?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/5739385609752254045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=5739385609752254045' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/5739385609752254045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/5739385609752254045'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/07/automatically-executing-client.html' title='Automatically Executing a Client Application Archive'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-821058149042486694</id><published>2007-06-27T07:43:00.000-07:00</published><updated>2007-06-27T07:47:44.266-07:00</updated><title type='text'>JDJ Article: Java EE 5 and Spring</title><content type='html'>JDJ just published second part of my &lt;a href="http://java.sys-con.com/read/393298.htm"&gt;article&lt;/a&gt; on Java EE 5/ EJB 3 integration with Spring. You can read the article in the June 2007 issue. Here is &lt;a href="http://java.sys-con.com/read/393298.htm"&gt;link to the article &lt;/a&gt;for your reading pleasure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-821058149042486694?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/821058149042486694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=821058149042486694' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/821058149042486694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/821058149042486694'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/06/jdj-article-java-ee-5-and-spring.html' title='JDJ Article: Java EE 5 and Spring'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-7620035455038978789</id><published>2007-06-21T12:47:00.000-07:00</published><updated>2007-06-21T12:52:32.646-07:00</updated><title type='text'>EJB 3 In Action is #1 spot of hot new released Java Books</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_Mv8xjdIVnWw/RnrWjuK8m1I/AAAAAAAAAAU/kzwmQNkImng/s1600-h/bestseller.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5078607438991366994" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_Mv8xjdIVnWw/RnrWjuK8m1I/AAAAAAAAAAU/kzwmQNkImng/s320/bestseller.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;EJB 3 In Action got the #1 spot of best selling new and future release Java books. Note that Amazon keeps on changing the rank every hour&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Here is the screen shot that shows that it's #1&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-7620035455038978789?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/7620035455038978789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=7620035455038978789' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/7620035455038978789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/7620035455038978789'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/06/ejb-3-in-action-is-1-spot-of-hot-new.html' title='EJB 3 In Action is #1 spot of hot new released Java Books'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Mv8xjdIVnWw/RnrWjuK8m1I/AAAAAAAAAAU/kzwmQNkImng/s72-c/bestseller.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-2362250147390334114</id><published>2007-06-06T15:11:00.001-07:00</published><updated>2007-06-07T11:24:48.736-07:00</updated><title type='text'>IndicThreads Java Coding Contest and EJB 3 In Action</title><content type='html'>India's premier Java Developer portal &lt;a href="http://indicthreads.com"&gt;IndicThreads&lt;/a&gt; is holding a J&lt;a href="http://www.indicthreads.com/contests/1121/java_javaee_coding_contest.html"&gt;ava coding contest.&lt;/a&gt; This week winner gets a copy of my book &lt;a href="http://manning.com/panda"&gt;EJB 3 In Action&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Also EJB 3 In Action has been reprinted in India by DreamTech press and is available now at most computer book stores!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-2362250147390334114?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/2362250147390334114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=2362250147390334114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2362250147390334114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2362250147390334114'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/06/indicthreads-java-coding-contest-and.html' title='IndicThreads Java Coding Contest and EJB 3 In Action'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1500481140163844766</id><published>2007-06-04T12:04:00.000-07:00</published><updated>2007-06-04T12:20:44.623-07:00</updated><title type='text'>Injecting POJOs and using resource injection in POJOs</title><content type='html'>Java EE 5 greatly simplifies using resources and EJBs by using dependency injection. However this support limits only to managed classes such as EJBs, Interceptors, Servlets, etc. Many applications use helper classes those are regular POJOs. However Java EE 5 / EJB 3 does not require support of dependency injection with regular POJOs or injecting POJOs into managed classes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In this article, I will discuss about Oracle’s extension of managed POJOs and describes how to use dependency injection such as &lt;span style="font-family:courier new;"&gt;@Resource or @PersistenceContext&lt;/span&gt; with regular POJOs (&lt;a href="http://www.oracle.com/technology/tech/java/oc4j/11/index.html"&gt;in OC4J 11 Preview&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This example has a session bean named &lt;span style="font-family:courier new;"&gt;EmployeeFacade&lt;/span&gt; that injects a regular POJO named &lt;span style="font-family:courier new;"&gt;EmployeeHelper&lt;/span&gt;. The &lt;span style="font-family:courier new;"&gt;EmployeeHelper&lt;/span&gt; POJO uses &lt;span style="font-family:courier new;"&gt;@PersistenceContext&lt;/span&gt; to inject an instance of &lt;span style="font-family:courier new;"&gt;EntityManager&lt;/span&gt;.&lt;br /&gt;&lt;a name="slsb"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;span style="font-size:130%;"&gt;Using Annotations in regular POJOs&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To use dependency injection with regular POJO it does not require any Oracle specific extension. The only requirement is that it must be injected to another managed class by using &lt;span style="font-family:courier new;"&gt;@oracle.j2ee.annotation.InjectedObject&lt;/span&gt; or using Oracle specific descriptor e.g. orion-ejb-jar.xml.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Following is an example of regular POJO that uses dependency injection.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;public class EmployeeHelper {&lt;br /&gt;@PersistenceContext&lt;br /&gt;private EntityManager em;&lt;br /&gt;private Employee emp;&lt;br /&gt;public Employee findById(int empNo) {&lt;br /&gt;return ((Employee) em.find(Employee.class, empNo));&lt;br /&gt;}&lt;br /&gt;public Employee saveEmployee(String eName, double sal) {&lt;br /&gt;..&lt;br /&gt;return emp;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="client"&gt;&lt;/a&gt;&lt;span style="color:#333399;"&gt;&lt;span style="font-size:130%;"&gt;Injecting a POJO &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;OC4J 11 allows injecting POJOs to a managed class or to another POJO using &lt;span style="font-family:courier new;"&gt;@oracle.j2ee.annotation.InjectedObject.&lt;/span&gt; To inject the &lt;span style="font-family:courier new;"&gt;EmployeeHelper &lt;/span&gt;class into the &lt;span style="font-family:courier new;"&gt;EmployeeFacade&lt;/span&gt; EJB we need the following code:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3366ff;"&gt;@Stateless&lt;br /&gt;public class EmployeeFacadeBean implements EmployeeFacade {&lt;br /&gt;@InjectedObject&lt;br /&gt;private EmployeeHelper eh;&lt;br /&gt;&lt;br /&gt;public Employee findEmployeeByEmpNo(int empNo) {&lt;br /&gt;return eh.findById(empNo);&lt;br /&gt;}&lt;br /&gt;public int addEmployee(String eName, double sal) {&lt;br /&gt;return eh.saveEmployee(eName,sal).getEmpNo();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:arial;font-size:130%;color:#000000;"&gt;Conclusion&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:Arial;"&gt;OC4J 11 allows injecting one POJO to another POJO. You can try this with &lt;a href="http://www.oracle.com/technology/tech/java/oc4j/11/index.html"&gt;OC4J 11 Preview &lt;/a&gt;and let us know what other features you want to see.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1500481140163844766?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1500481140163844766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1500481140163844766' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1500481140163844766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1500481140163844766'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/06/injecting-pojos-and-using-resource.html' title='Injecting POJOs and using resource injection in POJOs'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-417489472670983866</id><published>2007-06-04T09:59:00.000-07:00</published><updated>2007-06-04T10:07:31.341-07:00</updated><title type='text'>Another Five STAR rating for EJB 3 In Action</title><content type='html'>Another reviewer of &lt;a href="http://www.javalobby.org/articles/ejb3-in-action-smolyak/"&gt;JavaLobby (Michael Smolyak &lt;/a&gt;) gave five star rating to &lt;a href="http://manning.com"&gt;EJB 3 In Action&lt;/a&gt;.  Here is what he says:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"The book is enjoyable, extremely well organized and covers a wide range of EJB subjects. I would recommend EJB 3 in Action to both old hands and newly-initiated in the EJB craft. My only complaint is the size of the book; but I think the logical, unhurried and deliberate manner, with which the authors approached the non-trivial subjects addressed in this book, making them accessible to EJB novices, and the breadth of material covered in the volume do make up for its weightiness."&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;Read the detailed review at &lt;a href="http://www.javalobby.org/articles/ejb3-in-action-smolyak/"&gt;JavaLobby&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-417489472670983866?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/417489472670983866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=417489472670983866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/417489472670983866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/417489472670983866'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/06/another-five-star-rating-for-ejb-3-in.html' title='Another Five STAR rating for EJB 3 In Action'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1789838185350795427</id><published>2007-05-29T10:27:00.000-07:00</published><updated>2007-05-29T10:47:21.831-07:00</updated><title type='text'>JavaRanch gives 9 horseshoes out of 10 to EJB 3 In Action</title><content type='html'>&lt;a href="http://manning.com/panda"&gt;EJB 3 In Action&lt;/a&gt; gets &lt;a href="http://radio.javaranch.com/news/2007/05/27/1180253295249.html"&gt;9 horseshoes &lt;/a&gt;out of 10 from JavaRanch. Read the &lt;a href="http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&amp;f=49&amp;amp;t=000731"&gt;full review&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1789838185350795427?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1789838185350795427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1789838185350795427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1789838185350795427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1789838185350795427'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/05/javaranch-gives-9-shoehorses-out-of-10.html' title='JavaRanch gives 9 horseshoes out of 10 to EJB 3 In Action'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-6562055853968715876</id><published>2007-05-21T13:25:00.000-07:00</published><updated>2007-05-21T16:48:32.922-07:00</updated><title type='text'>EJB 3 In Action is in Amazon's Top 20 Selling Java Books</title><content type='html'>A friend of mine send me a note that my book &lt;a href="http://manning.com/panda/"&gt;EJB 3 In Action &lt;/a&gt;has featured in&lt;a href="http://www.amazon.com/gp/bestsellers/books/3608/ref=pd_ts_b_nav/103-0219795-9387019?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=left-1&amp;amp;amp;pf_rd_r=0VBWWYZRC163G2R76G7Q&amp;pf_rd_t=2101&amp;amp;pf_rd_p=221591101&amp;pf_rd_i=3839"&gt; Top 20 selling Java Book &lt;/a&gt;at Amazon.com It was at #18 when I was saw it. Also it was a&lt;a href="http://www.amazon.ca/gp/bestsellers/books/939240/ref=pd_ts_b_nav/702-3007185-9140826?pf_rd_m=A3DWYIK6Y9EEQB&amp;amp;pf_rd_s=left-1&amp;pf_rd_r=1K96ZW86492B2DS4H38M&amp;amp;amp;pf_rd_t=2101&amp;pf_rd_p=221595101&amp;amp;pf_rd_i=939856"&gt;t #10 in the Top Selling Java Books at Amazon Canada&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-6562055853968715876?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/6562055853968715876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=6562055853968715876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/6562055853968715876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/6562055853968715876'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/05/ejb-3-in-action-is-in-amazons-top-20.html' title='EJB 3 In Action is in Amazon&apos;s Top 20 Selling Java Books'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-3587863996888289067</id><published>2007-05-10T09:18:00.000-07:00</published><updated>2007-05-10T09:24:09.291-07:00</updated><title type='text'>EJB 3 Action @JavaOne bookstore!</title><content type='html'>Few guys told me that their local B &amp; N or Borders do not carry &lt;a href="http://manning.com/panda"&gt;EJB 3 In Action&lt;/a&gt; as yet. The Bookstore at JavaOne is selling the &lt;a href="http://manning.com/panda"&gt;EJB 3 In Action&lt;/a&gt;. It is offering 20% discount so it's a steal! Also the publisher is offering 35% discount on the book for the JavaOne attendees if ordered from it's website. So get a flyer with a coupon code. Some of these are in the bookstore or around the Oracle's EJB 3/ OC4J booth in the Exhibition Hall!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-3587863996888289067?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/3587863996888289067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=3587863996888289067' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3587863996888289067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3587863996888289067'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/05/ejb-3-action-javaone-bookstore.html' title='EJB 3 Action @JavaOne bookstore!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-2437008843918475263</id><published>2007-05-09T23:45:00.000-07:00</published><updated>2007-05-09T23:57:06.486-07:00</updated><title type='text'>Using Dependency Injection to invoke EJB deployed in a remote container</title><content type='html'>&lt;p style="font-family: arial;" class="MsoNormal"&gt;Many applications require invocation of EJBs deployed in a remote container. EJB 3 and Java EE 5 support injection of remote EJB references only in the application client container. Let us say you want to invoke an EJB based on a remote container from your web client (JSF backing bean) or an EJB then you have to resort to the JNDI lookup. Unfortunately injection of remote references have been left as an extension to application server vendors.&lt;br /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;In this blog I will demonstrate how OC4J 11g preview supports injection of EJB references that is deployed in a remote container.&lt;/p&gt;    &lt;p style="font-family: arial;"&gt;Let us assume that we have two Session EJBs HelloWorld and Namaste deployed in two different OC4J instances.  The HelloWorld EJB uses dependency injection to get a reference to Namaste EJB located in a remote container.&lt;/p&gt;  &lt;h3 style="margin: 0in 0in 0.0001pt;"&gt;Stateless Session Bean example using EJB 3.0 &lt;/h3&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;We will deploy Namaste EJB into second OC4J instance that will be remotely invoked by the HelloWorld EJB. The following is the coded  for the Namaste EJB. &lt;/p&gt;  &lt;pre style="line-height: 10.5pt; color: rgb(51, 51, 255); font-family: courier new;"&gt;&lt;code&gt;@StatelessDeployment(location="Namaste")&lt;/code&gt;&lt;/pre&gt;&lt;pre style="line-height: 10.5pt; font-family: courier new; color: rgb(51, 51, 255);"&gt;&lt;strong&gt;@Stateless&lt;/strong&gt;&lt;/pre&gt;&lt;pre style="line-height: 10.5pt; font-family: courier new; color: rgb(51, 51, 255);"&gt;&lt;code&gt;public class NamasteBean implements Namaste &lt;/code&gt;&lt;/pre&gt;&lt;pre style="line-height: 10.5pt; font-family: courier new; color: rgb(51, 51, 255);"&gt;&lt;code&gt;{&lt;/code&gt;&lt;/pre&gt;&lt;pre style="line-height: 10.5pt; font-family: courier new; color: rgb(51, 51, 255);"&gt;&lt;code&gt;public void sayHello(String name)&lt;/code&gt;&lt;/pre&gt;&lt;pre style="line-height: 10.5pt; font-family: courier new; color: rgb(51, 51, 255);"&gt;&lt;code&gt;{&lt;/code&gt;&lt;/pre&gt;&lt;pre style="line-height: 10.5pt; font-family: courier new; color: rgb(51, 51, 255);"&gt;&lt;code&gt;System.out.println("Namaste "+name +" from Remote EJB");&lt;/code&gt;&lt;/pre&gt;&lt;pre style="line-height: 10.5pt; font-family: courier new; color: rgb(51, 51, 255);"&gt;&lt;code&gt;}&lt;/code&gt;&lt;/pre&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;Note that the location parameter of &lt;strong&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;@oracle.j2ee.annotation.ejb.StatelessDeployment&lt;/span&gt; &lt;/strong&gt;is used to configure global JNDI name for the Namaste EJB. &lt;/p&gt;  &lt;h3 style=""&gt;Injection Code to Invoke the Remote EJB &lt;/h3&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;OC4J allows injecting remote EJB references (deployed on remotre server) by using a proprietary annotation &lt;b style="color: rgb(51, 102, 255);"&gt;@oracle.j2ee.annotation.ejb.EJBRefMapping&lt;/b&gt;, as shown in the following code. Note that HelloWorld EJB is deployed in OC4J instance 1.&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;@Stateless&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;public class HelloWorldBean implements HelloWorld {&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText" style="margin: 0in 0in 0.0001pt; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:100%;"&gt;@EJBRefMapping(remoteServerRef="true",location="Namaste",&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoBodyText" style="margin: 0in 0in 0.0001pt; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:100%;"&gt;                                                jndiPropertiesFile="META-INF/jndi.properties")&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;@EJB&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;private Namaste namaste;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;       public void sayHello(String name) {&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;            System.out.println("Hello " + name+ " from your first EJB 3.0 component ... ");&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;            System.out.println("Using Injection to invoke method of Namaste Bean! See console of remote container ");&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;           namaste.sayNamaste(name);&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;    }&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;The location element specifies the global JNDI for the remote interface of the EJB and &lt;span style="color: rgb(51, 102, 255);"&gt;jndiProperties&lt;/span&gt; file specifies the JNDI properties such as provider URL, principal, credential, etc to look up the remote EJB as follows:&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;j&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;ava.naming.factory.initial=oracle.j2ee.rmi.RMIInitialContextFactory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;java.naming.provider.url=ormi://localhost:23792/remoteDI&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;java.naming.security.principal=oc4jadmin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;java.naming.security.credentials=welcome&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt; You can use &lt;span style="color: rgb(51, 102, 255);"&gt;@EJBRefMapping&lt;/span&gt; annotation in any manage classes in the container such as Servlet, listeners or managed POJOs. If you are not comfortable using Oracle's extension, you can use the equivalent in oracle-ejb-jar.xml.&lt;br /&gt;&lt;/p&gt;  &lt;h3 style=""&gt;Client Code &lt;/h3&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;The client code runs in Oracle’s application client container and uses dependency injection to invoke methods on HelloWorld EJB as follows:.&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;public class HelloWorldClient {&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;      @EJB&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;        private static HelloWorld helloWorld;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;      …&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;             helloWorld.sayHello(name);&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(51, 102, 255);"&gt;&lt;span style=""&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span style="font-weight: bold;"&gt; Conclusion&lt;/span&gt;&lt;/p&gt;Dependency Injection of remote EJB references in not standardized. You can use Oracle's  proprietary extension to  injection remote EJB references.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-2437008843918475263?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/2437008843918475263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=2437008843918475263' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2437008843918475263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2437008843918475263'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/05/using-dependency-injection-to-invoke.html' title='Using Dependency Injection to invoke EJB deployed in a remote container'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-4808233469905950427</id><published>2007-05-09T11:32:00.000-07:00</published><updated>2007-05-09T12:37:47.084-07:00</updated><title type='text'>Should EJB 3 contain support for EJB 2?  Yes, ALWAYS !!</title><content type='html'>&lt;p class="MsoNormal"&gt;I read the interesting&lt;a href="http://weblogs.java.net/blog/schaefa/archive/2007/05/ejb3_and_glassf.html"&gt; blog &lt;/a&gt;by Andreas where he makes argument that EJB 2 should have been optional in EJB 3!&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;In my opinion, “No, never”. There have been countless EJB 2 applications in production and I still see many developers actively developing/deploying EJB 2 applications because many application servers such as IBM Websphere still do not have support for EJB 3 in their production servers. Many of EJB 2 applications will migrate to use EJB 3 but many will probably hang around for years. Support for EJB 2 and EJB 3 together allows applications to interoperate between applications using two different versions of applications deployed in the same container. This also enables customers to do a phased migration of applications. Having said that EJB 3 de-supported EJB 1.1 and I still want to see support for EJB 2.1 in EJB 3.1. I think it makes sense for a standard to support at least two earlier releases. I’m okay if EJB 4 (probably it will at least 2-3 years from now) de-supports EJB 2.1. If Sun decides to EJB 2.1 in EJB 3.1 then most customers will probably be mad and decide to dump EJB :) Anyway vendors like Oracle will keep supporting EJB 2.1 with EJB 3.1 to keep their customers up and running! &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-4808233469905950427?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/4808233469905950427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=4808233469905950427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4808233469905950427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4808233469905950427'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/05/should-ejb-3-contain-support-for-ejb-2.html' title='Should EJB 3 contain support for EJB 2?  Yes, ALWAYS !!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-461635347990682408</id><published>2007-05-08T15:18:00.000-07:00</published><updated>2007-05-08T15:24:59.232-07:00</updated><title type='text'>Oracle releases Java EE 5 compatible container!</title><content type='html'>Oracle released Java EE 5 compliant &lt;a href="http://www.oracle.com/technology/tech/java/oc4j/index.html"&gt;Oracle Application Server 11 technology preview&lt;/a&gt;.  This preview has several extensions to the Java EE 5 that includes the POJO injection, injection remote EJB references, embeddable Spring container and many more. I'm at JavaOne currently and I will blog about these features in coming days!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-461635347990682408?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/461635347990682408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=461635347990682408' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/461635347990682408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/461635347990682408'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/05/oracle-releases-java-ee-5-compatible.html' title='Oracle releases Java EE 5 compatible container!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1268143820180127654</id><published>2007-05-03T11:17:00.000-07:00</published><updated>2007-05-03T11:18:52.968-07:00</updated><title type='text'>EJB 3 In Action: Book Signing</title><content type='html'>I will do a book-signing at JavaOne next week. You can drop by at the DigitalGuru Bookstores at Moscone between 4:00-4:30pm on Tuesday(8th May) with your copy of the &lt;a href="http://manning.com/panda/"&gt;EJB 3 In Action &lt;/a&gt;or buy one at the bookstore and get it autographed!&lt;br /&gt;&lt;br /&gt;See you at San Francisco and have a great JavaOne!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1268143820180127654?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1268143820180127654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1268143820180127654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1268143820180127654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1268143820180127654'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/05/ejb-3-in-action-book-signing.html' title='EJB 3 In Action: Book Signing'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-3676498221353239191</id><published>2007-04-26T13:05:00.000-07:00</published><updated>2007-04-26T13:14:35.987-07:00</updated><title type='text'>JDJ Article: Spring and Java EE 5</title><content type='html'>JDJ published part-1 of my article &lt;a href="http://java.sys-con.com/read/366297.htm"&gt;Spring and Java: Simplicity and Power Combined&lt;/a&gt; in their latest issue. In the first part of article I discuss the Simplicity brought by Java EE 5 and integration between Spring and JPA. Stay tuned for the second part of the article in which you will discover how the Spring Framework integrates with other components such as an EJB, Java Message Service (JMS), and transaction manager.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-3676498221353239191?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/3676498221353239191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=3676498221353239191' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3676498221353239191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3676498221353239191'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/04/jdj-article-spring-and-java-ee-5.html' title='JDJ Article: Spring and Java EE 5'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-5398260934439383832</id><published>2007-04-23T16:48:00.000-07:00</published><updated>2007-04-23T17:01:35.886-07:00</updated><title type='text'>Amazon finally started shipping!</title><content type='html'>I got few queries from readers about &lt;a href="http://www.amazon.com/Ejb-3-Action-Debu-Panda/dp/1933988347/"&gt;Amazon.com&lt;/a&gt; giving a shipping date in mid-May for my book &lt;a href="http://manning.com/panda/"&gt;EJB 3 In Action&lt;/a&gt;. I had put a test order and Amazon.com notified I that they shipped the order.  Both &lt;a href="http://www.amazon.com/Ejb-3-Action-Debu-Panda/dp/1933988347/"&gt;Amazon.com &lt;/a&gt;and &lt;a href="http://www.amazon.co.uk/Ejb-3-Action-Debu-Panda/dp/1933988347/"&gt;Amazon UK&lt;/a&gt; have started shipping. &lt;a href="http://www.amazon.ca/Ejb-3-Action-Debu-Panda/dp/1933988347/"&gt;Amazon Canada&lt;/a&gt; still shows pre-order. I think it is now available in bookstores such as &lt;a href="http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?z=y&amp;EAN=9781933988344&amp;amp;itm=2"&gt;Barnes and Noble &lt;/a&gt;and Borders by now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-5398260934439383832?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/5398260934439383832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=5398260934439383832' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/5398260934439383832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/5398260934439383832'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/04/amazon-finally-started-shipping.html' title='Amazon finally started shipping!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-6461485165298446892</id><published>2007-04-12T05:49:00.000-07:00</published><updated>2007-04-12T06:02:08.194-07:00</updated><title type='text'>Google Alert Works sometime: Great Review from JavaLobby!</title><content type='html'>Google's alert works sometimes! I've an alert set for "&lt;a href="http://www.manning.com/panda/"&gt;EJB 3 In Action&lt;/a&gt;" and I mostly ignore because mostly I get alerts for web pages that were created couple of years back. But it was an early morning suprise. We have a great review from &lt;a href="http://www.dzone.com/rsslinks/ejb_3_in_action_review.html"&gt;DZone&lt;/a&gt; / &lt;a href="http://www.javalobby.org/articles/ejb3-in-action-meera/"&gt;JavaLobby&lt;/a&gt;.  We have got five smileys (the highest) in all respects: relevance, readability and overall. It was good to know that the reviewer (Meera) had reviewed two other EJB 3 books (O'Reilly and Apress) earlier and she gives us highest marks!&lt;br /&gt;&lt;br /&gt;Here is her concluding remark:&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;&lt;span style="color:#3366ff;"&gt;When you start reading a technical book within the first few pages itself you really know whether you like the book or not. This book was very interesting to me and kept the interest all the way until the end. I found this book to be well worth the time I spent reading it in spite of me being quite familiar with EJB3 as well as JPA. If you are planning on using EJB3 or even migrating your existing EJB 2 applications, I would highly recommend this book.&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;Last but not the least, Part 4 and Part 5 of this book, and the performance considerations and best practices for EJB's at the end of a few chapters in itself is worth the price of the book."&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;span style="color:#330033;"&gt;Take a look at the&lt;/span&gt; &lt;a href="http://www.javalobby.org/articles/ejb3-in-action-meera/"&gt;complete review&lt;/a&gt;!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-6461485165298446892?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/6461485165298446892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=6461485165298446892' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/6461485165298446892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/6461485165298446892'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/04/google-alert-works-sometime-great.html' title='Google Alert Works sometime: Great Review from JavaLobby!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1262764011585632546</id><published>2007-04-11T08:00:00.000-07:00</published><updated>2007-04-11T08:06:32.981-07:00</updated><title type='text'>My Copies of EJB 3 In Action Arrived</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_Mv8xjdIVnWw/Rhz5Lm_MmpI/AAAAAAAAAAM/sZ2g12JvD5E/s1600-h/book.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5052186859842345618" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_Mv8xjdIVnWw/Rhz5Lm_MmpI/AAAAAAAAAAM/sZ2g12JvD5E/s320/book.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;My copies of &lt;a href="http://manning.com/panda"&gt;EJB 3 In Action&lt;/a&gt; arrived yesterday. I've been waiting and waiting because the binders shipped those on 4th. And it was misdelivered to at my neighbor's door by UPS a couple of days ago!&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Anyway here is a picture of the book after I opened! &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1262764011585632546?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1262764011585632546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1262764011585632546' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1262764011585632546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1262764011585632546'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/04/my-copies-of-ejb-3-in-action-arrived.html' title='My Copies of EJB 3 In Action Arrived'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Mv8xjdIVnWw/Rhz5Lm_MmpI/AAAAAAAAAAM/sZ2g12JvD5E/s72-c/book.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-915652526929708952</id><published>2007-04-10T14:40:00.000-07:00</published><updated>2007-04-10T14:49:14.414-07:00</updated><title type='text'>Article:Packaging EJB 3 Applications</title><content type='html'>&lt;a href="http://www.developer.com/"&gt;Developer.com &lt;/a&gt;published an article &lt;a href="http://www.developer.com/java/ejb/article.php/10931_3670496_1"&gt;Packaging EJB 3 Applications&lt;/a&gt; that is an excerpt from the Chapter 11 of our book &lt;a href="http://manning.com/panda/"&gt;EJB 3 In Action&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;This article provides:&lt;br /&gt;1. Overview of Java EE packages such as EAR, WAR&lt;br /&gt;2.  An intro to Classloading and classloading in Java EE&lt;br /&gt;3.  Packaging Session beans and MDBs&lt;br /&gt;4.  Discussion on annotations and overriding with descriptors&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-915652526929708952?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/915652526929708952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=915652526929708952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/915652526929708952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/915652526929708952'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/04/articlepackaging-ejb-3-applications.html' title='Article:Packaging EJB 3 Applications'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-3386810075917441029</id><published>2007-04-06T13:02:00.000-07:00</published><updated>2007-04-06T13:07:29.931-07:00</updated><title type='text'>EJB 3 In Action Now available!</title><content type='html'>Print copies of &lt;a href="http://manning.com/panda"&gt;EJB 3 In Action &lt;/a&gt;have left the printers and are now available. It will take about 10 days-to 2 weeks for Amazon and book stores to stock up and start shipping. The fastest way to get your print copy is to order at the publisher's web site &lt;a href="http://www.manning.com/panda/"&gt;http://www.manning.com/panda/&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-3386810075917441029?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/3386810075917441029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=3386810075917441029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3386810075917441029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3386810075917441029'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/04/ejb-3-in-action-now-available.html' title='EJB 3 In Action Now available!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-7042793096137880256</id><published>2007-03-23T10:30:00.000-07:00</published><updated>2007-03-23T10:32:36.670-07:00</updated><title type='text'>Oracle Acquires Tangosol</title><content type='html'>Oracle announced that it will acquire &lt;a href="http://tangosol.com"&gt;Tangosol&lt;/a&gt;. Congrats Cameron and gang and welcome to Oracle!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-7042793096137880256?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/7042793096137880256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=7042793096137880256' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/7042793096137880256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/7042793096137880256'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/03/oracle-acquires-tangosol.html' title='Oracle Acquires Tangosol'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1847937997056973520</id><published>2007-03-21T13:12:00.000-07:00</published><updated>2007-03-21T13:21:30.569-07:00</updated><title type='text'>Using @EJB annotation across different ejb-jar module</title><content type='html'>I got some questions from customers on how to use @EJB annotation to inject instance of a session packaged in another EJB-JAR. In this blog entry I will outline how to do that.&lt;br /&gt;&lt;br /&gt;Let us assume that you have two stateless beans &lt;span style="font-family:courier new;"&gt;SessionEJB&lt;/span&gt;1 and &lt;span style="font-family:courier new;"&gt;SessionEJB2&lt;/span&gt; and those are packaged in two different EJB modules &lt;span style="font-family:courier new;"&gt;ejb1-ejb.jar&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;ejb2-ejb.jar&lt;/span&gt; respectively. You want to use inject &lt;span style="font-family:courier new;"&gt;SessionEJB2&lt;/span&gt; (in ejb2-ejb.jar) from &lt;span style="font-family:courier new;"&gt;SessionEJB1&lt;/span&gt; (packaged in ejb1-ejb.jar) then you can just do the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;@Stateless&lt;br /&gt;public class SessionEJB1Bean implements SessionEJB1, SessionEJB1Local {&lt;br /&gt;@EJB&lt;br /&gt;testejb2.SessionEJB2 ejb2;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This works great in OC4J 10.1.3.1.&lt;br /&gt;&lt;br /&gt;Optionally you may do as follows, following the ejb-link convention that we used in EJB 2.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#3333ff;"&gt;@EJB(beanName="ejb2-ejb.jar#SessionEJB2Bean", &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;beanInterface=testejb2.SessionEJB2.class)&lt;br /&gt;testejb2.SessionEJB2 ejb2;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've seen this problem when I deploy from JDeveloper. If you are using JDeveloper 10.1.3.1 and getting &lt;span style="font-family:courier new;"&gt;NameNotFoundException&lt;/span&gt; then make sure that your dependent ejb-jar module does package duplicate classes. By default when you declare a dependency on another project the classes are automatically packaged in the dependent jar e.g. ejb1-ejb.jar in our case. You have to verify it using the deployment profile for your EJB module. Make sure that you have unchecked the classes by selecting filters.&lt;br /&gt;&lt;br /&gt;Hope this works for you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1847937997056973520?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1847937997056973520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1847937997056973520' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1847937997056973520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1847937997056973520'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/03/using-ejb-annotation-across-different.html' title='Using @EJB annotation across different ejb-jar module'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-8189735034510026966</id><published>2007-03-20T09:39:00.000-07:00</published><updated>2007-03-20T09:41:46.415-07:00</updated><title type='text'>EJB 3 In Action goes to press: eBook now available!</title><content type='html'>&lt;a href="http://manning.com/panda/"&gt;EJB 3 In Action&lt;/a&gt; went to press late last week. The e-Book has been published at the &lt;a href="http://manning.com/panda/"&gt;Manning web site&lt;/a&gt; . Print copies of the book will be available at Manning web site for order and hit the shelves at the brick and mortar stores such as Barnes and Noble and Borders in another 2-3 weeks.&lt;br /&gt;&lt;br /&gt;Two sample chapters (chapter 1 and 11) are available free at the &lt;a href="http://manning.com/panda/"&gt;book site&lt;/a&gt;. You can take a look at the preface, table of contents and index.&lt;br /&gt;&lt;br /&gt;You can order the book from Amazon.com at &lt;a href="http://www.amazon.com/Ejb-3-Action-Debu-Panda/dp/1933988347"&gt;http://www.amazon.com/Ejb-3-Action-Debu-Panda/dp/1933988347&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The global sites at Amazon screwed up the listing and show two books. It was due to the change in ISBN. Note the correct ISBN is: 1-933988-34-7 and book is of 700 pages.&lt;br /&gt;&lt;br /&gt;Here are links to the correct book at Amazon sites for few countries&lt;br /&gt;&lt;br /&gt;Canada : &lt;a href="http://www.amazon.ca/Ejb-3-Action-Debu-Panda/dp/1933988347"&gt;http://www.amazon.ca/Ejb-3-Action-Debu-Panda/dp/1933988347&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;France : &lt;a href="http://www.amazon.fr/Ejb-3-Action-Debu-Panda/dp/1933988347"&gt;http://www.amazon.fr/Ejb-3-Action-Debu-Panda/dp/1933988347&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Germany: &lt;a href="http://www.amazon.de/Ejb-3-Action-Debu-Panda/dp/1933988347"&gt;http://www.amazon.de/Ejb-3-Action-Debu-Panda/dp/1933988347&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Japan: http://www.amazon.jp/Ejb-3-Action-Debu-Panda/dp/1933988347&lt;br /&gt;&lt;br /&gt;UK : &lt;a href="http://www.amazon.co.uk/Ejb-3-Action-Debu-Panda/dp/1933988347"&gt;http://www.amazon.co.uk/Ejb-3-Action-Debu-Panda/dp/1933988347&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With the release of the book I’m relieved and looking forward to reviews by readers. We have a great draft review from &lt;a href="(http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&amp;f=11&amp;amp;t=013162"&gt;JavaRanch&lt;/a&gt;  and hope many good reviews will pour in!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-8189735034510026966?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/8189735034510026966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=8189735034510026966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/8189735034510026966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/8189735034510026966'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/03/ejb-3-in-action-goes-to-press-ebook-now.html' title='EJB 3 In Action goes to press: eBook now available!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-2055198413080840318</id><published>2007-03-13T08:22:00.000-07:00</published><updated>2007-03-13T08:38:45.790-07:00</updated><title type='text'>EJB 3 In Action: Book Promotion</title><content type='html'>&lt;p class="MsoNormal"&gt;JavaRanch has arranged a promotional event for our book &lt;a href="http://www.manning.com/panda/"&gt;EJB 3 In Action&lt;/a&gt; (&lt;a href="http://www.manning.com/panda/"&gt;http://www.manning.com/panda/&lt;/a&gt;) . You can ask some questions about our book or EJB 3 technology in general in their&lt;span style=""&gt;  &lt;/span&gt;&lt;a href="http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=forum&amp;f=11"&gt;EJB and Technologies&lt;/a&gt;&lt;a href="http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=forum&amp;amp;f=11"&gt; forum&lt;/a&gt; and get a chance to win a copy of the book.&lt;/p&gt;&lt;br /&gt;The book goes to press today. eBook will be available on Mar 15 and print copies will be available Mar 30. You can buy eBoook or print book from &lt;a href="%28http://www.manning.com/panda/"&gt;Manning web site. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can also order copies from&lt;a href="http://www.amazon.com/EJB-3-Action-Debu-Panda/dp/1933988347"&gt; Amazon&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-2055198413080840318?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/2055198413080840318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=2055198413080840318' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2055198413080840318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2055198413080840318'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/03/ejb-3-in-action-book-promotion.html' title='EJB 3 In Action: Book Promotion'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-9175687067286231239</id><published>2007-03-06T14:34:00.000-08:00</published><updated>2007-03-06T14:43:01.396-08:00</updated><title type='text'>EclipseLink FAQ</title><content type='html'>Oracle proposed the EclipseLink Persistence framework based on its TopLink product. I forgot to link the FAQ for this. Here&lt;a href="http://www.oracle.com/technology/tech/eclipse/pdf/eclipselink-faq.pdf"&gt; it is &lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-9175687067286231239?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/9175687067286231239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=9175687067286231239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/9175687067286231239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/9175687067286231239'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/03/eclipselink-faq.html' title='EclipseLink FAQ'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-5643067359385520779</id><published>2007-03-06T10:39:00.000-08:00</published><updated>2007-03-06T10:45:54.460-08:00</updated><title type='text'>Oracle open sourced complete TopLink product as an Eclipse project</title><content type='html'>Oracle donates the complete TopLink product to Eclipse.&lt;br /&gt;&lt;br /&gt;You may remember that Oracle had earlier contributed TopLink Essentials (a part of TopLink) to Sun’s Glassfish project that became the reference implementation for the EJB 3 JPA spec. However today's announcement is for proposing new Java persistence project based on TopLink product that includes support for ORM, Object-XML Mapping, JAXB, SDO, etc.&lt;br /&gt;&lt;br /&gt;See the complete &lt;a href="http://biz.yahoo.com/prnews/070306/sftu154.html?.v=8"&gt;press release &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-5643067359385520779?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/5643067359385520779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=5643067359385520779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/5643067359385520779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/5643067359385520779'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/03/oracle-open-sourced-complete-toplink.html' title='Oracle open sourced complete TopLink product as an Eclipse project'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1600599961121974738</id><published>2007-03-02T09:50:00.000-08:00</published><updated>2007-03-02T10:26:07.580-08:00</updated><title type='text'>Customizing JNDI name for Session beans</title><content type='html'>Every vendor provides its own way of registering Session bean interfaces into their global JNDI tree. If you care about portability then you should NOT depend upon the global JNDI name and use the &lt;span style="font-family:courier new;"&gt;ref-name&lt;/span&gt; by using &lt;span style="font-family:courier new;"&gt;ejb-ref&lt;/span&gt; or&lt;span style="font-family:courier new;"&gt; ejb-local-ref&lt;/span&gt; and lookup the EJB from environment naming context using&lt;span style="font-family:courier new;"&gt; java:comp/env/&amp;lt;ref-name&gt;.&lt;/span&gt; However many have their own reasons not to use the standard convention and use the vendor specific JNDI name.&lt;br /&gt;&lt;br /&gt;If you are such a soul and want to customize the global JNDI name for a session bean in OC4J you can package an &lt;span style="font-family:courier new;"&gt;orion-ejb-jar.xml&lt;/span&gt; and specify location attribute (for remote interface) and local-location (for local interface) as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;&amp;lt;session-deployment location="PlaceOrderBean" name="PlaceOrder"&amp;gt;&amp;lt;/SESSION-DEPLOYMENT&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Note that OC4J uses the ejb-name element in the ejb-jar.xml or name parameter in &lt;span style="font-family:courier new;"&gt;@Stateless&lt;/span&gt; or &lt;span style="font-family:courier new;"&gt;@Stateful&lt;/span&gt; annotations as the default JNDI name for the remote interface.&lt;br /&gt;&lt;br /&gt;If you are using EJB 3 and annotation fanatic then you can use either &lt;span style="font-family:courier new;"&gt;@StatelessDeployment&lt;/span&gt; or &lt;span style="font-family:courier new;"&gt;@StatefulDeployment&lt;/span&gt; annotation to specify the JNDI names as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3366ff;"&gt;@StatefulDeployment(location="PlaceOrder",&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;color:#3366ff;"&gt;                    localLocation="PlaceOrderBeanLocal")&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Even if I want you to marry to our platform and use the global JNDI name so that your migration becomes difficult but I will advise against using global JNDI names and recommend that you to use ejb-ref for portability reasons.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1600599961121974738?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1600599961121974738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1600599961121974738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1600599961121974738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1600599961121974738'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/03/customizing-jndi-name-for-session-beans.html' title='Customizing JNDI name for Session beans'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-2339001037035632237</id><published>2007-02-19T10:22:00.000-08:00</published><updated>2007-02-19T10:36:30.287-08:00</updated><title type='text'>OC4J Connection Pooling and non-Oracle databases</title><content type='html'>In my last entry I blogged about using MySql database with OC4J. I provided an example of native datasource that connects to the MySql database. Native data sources do not use connection pooling capabilities of OC4J. If you want use OC4J connection pooling with third-party databases you have to use a managed data source.&lt;br /&gt;&lt;br /&gt;Here is an  example managed data source  for MySql database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;connection-pool name="test Connection Pool"&gt;&lt;br /&gt;&lt;connection-factory style="COLOR: #6600cc"&gt;factory-class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"&lt;/span&gt;&lt;br /&gt;user="user1"&lt;br /&gt;password="user1"&lt;br /&gt;url="jdbc:mysql://144.25.134.24/Test"&gt;&lt;br /&gt;&amp;lt;/CONNECTION-FACTORY&gt;&lt;br /&gt;&amp;lt;/CONNECTION-POOL&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#3333ff;"&gt;&amp;lt;managed-data-source&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-family:courier new;"&gt;connection-pool-name="test Connection Pool"&lt;br /&gt;jndi-name="jdbc/mysql"&lt;br /&gt;name="mysql"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;You have to make sure that the factory-class in the connection-factory tag points to the DataSource class for your your database.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-2339001037035632237?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/2339001037035632237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=2339001037035632237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2339001037035632237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2339001037035632237'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/02/oc4j-connection-pooling-and-non-oracle.html' title='OC4J Connection Pooling and non-Oracle databases'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-5932256579511183406</id><published>2007-02-14T10:54:00.000-08:00</published><updated>2007-02-14T11:06:47.138-08:00</updated><title type='text'>Using MySQL with OC4J 10.1.3.x</title><content type='html'>When you have OracleXE available for free you would probably not use MySQL, but you may have a valid requirement to use MySQL with OC4J 10.1.3.&lt;br /&gt;&lt;br /&gt;1. &lt;strong&gt;&lt;span style="color:#000099;"&gt;Upload JDBC Driver&lt;/span&gt;&lt;/strong&gt; You have to make JDBC drivers (e.g. mysql-connector-java-3.0.11-stable-bin.jar)  for your database available to Oracle Application Server. You have to copy those to %ORACLE_HOME%/j2ee/home/applib directory.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#333399;"&gt;2. Create a Native DataSource&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;You can  use the ASC to create a native data source as follows:&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#6633ff;"&gt;&lt;native-data-source name="nativeDataSource"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#6633ff;"&gt;jndi-name="jdbc/MyDS"  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#6633ff;"&gt;description="Native DataSource"  data-source-class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#6633ff;"&gt;user="user" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#6633ff;"&gt; password="password"  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#6633ff;"&gt;url="jdbc:mysql://localhost:3306/mydatabase"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#6633ff;"&gt;&lt;/native-data-source&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;color:#6633ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#330033;"&gt;Now you should be able to access the DataSource connecting to MySQL database with a JNDI location "&lt;span style="font-family:courier new;color:#333399;"&gt;jdbc/MyDS&lt;/span&gt;".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;color:#330033;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-5932256579511183406?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/5932256579511183406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=5932256579511183406' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/5932256579511183406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/5932256579511183406'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/02/using-mysql-with-oc4j-1013x.html' title='Using MySQL with OC4J 10.1.3.x'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-4052885531145655869</id><published>2007-02-07T13:06:00.000-08:00</published><updated>2007-02-07T13:20:02.500-08:00</updated><title type='text'>EJB 3 In Action Book Update</title><content type='html'>Here is an update for book &lt;a href="http://www.manning.com/panda"&gt;EJB 3 In Action&lt;/a&gt;. We are done writing and editing and going thru final round of proof reading before getting published. The book will be published next month. The eBook will be available first week of March and print book will be available Mar 15.&lt;br /&gt;&lt;br /&gt;You can purchase and read the final draft of the book using &lt;a href="http://www.manning.com/panda/"&gt;Manning's MEAP program &lt;/a&gt;or pre-order from &lt;a href="http://www.amazon.com/EJB-3-Action-Debu-Panda/dp/1933988347"&gt;Amazon&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;If you have any questions about the book or found any technical errors please report to the &lt;a href="http://www.manning-sandbox.com/forum.jspa?forumID=273"&gt;Author forum&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is Table of contents of the book:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.manning.com/panda/panda_meapch1.pdf" target="_blank"&gt;What's what in EJB&lt;/a&gt;&lt;br /&gt;2. A First taste of EJB&lt;br /&gt;3. Building Business Logic with Session beans&lt;br /&gt;4. Messaging and Developing Message Driven Beans&lt;br /&gt;5. Learning Advanced EJB Concepts&lt;br /&gt;6. Transactions and Security&lt;br /&gt;7. Implementing Domain Models with EJB 3&lt;br /&gt;8. Object-Relationship Mapping using EJB 3 JPA&lt;br /&gt;9. Manipulating entities with EntityManager API&lt;br /&gt;10. Using the Query API and the Java Persistence Query Language&lt;br /&gt;11. Packaging EJB 3 Applications&lt;br /&gt;12. Effectively Integrating EJB 3 across Your Application Tiers&lt;br /&gt;13. Taming Wild EJBs: Performance and Scalability&lt;br /&gt;14. Migrating to EJB 3&lt;br /&gt;15. Exposing EJBs as Web Services&lt;br /&gt;16. EJB 3 and Spring&lt;br /&gt;&lt;br /&gt;Appendix A. RMI and JNDI&lt;br /&gt;Appendix B. Reviewing relational databases&lt;br /&gt;Appendix C. Annotations reference&lt;br /&gt;Appendix D. Deployment descriptors reference&lt;br /&gt;Appendix E. Installing and configuring the Java EE 5 SDK&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-4052885531145655869?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/4052885531145655869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=4052885531145655869' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4052885531145655869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4052885531145655869'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/02/ejb-3-in-action-book-update.html' title='EJB 3 In Action Book Update'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-4116725973422359721</id><published>2007-01-30T14:28:00.000-08:00</published><updated>2007-01-31T02:43:47.075-08:00</updated><title type='text'>Using Hibernate as a Pluggable EJB 3 JPA Provider</title><content type='html'>EJB 3 supports pluggable persistence contract that allows you to plug-in any persistence provider implementing JPA 1.0 with a container that supports JavaEE 5 / EJB 3 spec. It’s provides choice to users to choose their JPA provider of choice. I thought I would give a spin and check whether this plug-ability story really works and here is the result!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I used &lt;a href="http://www.oracle.com/technology/products/oc4j/index.html"&gt;Oracle Application Server 10g 10.1.3.1&lt;/a&gt; that has support for EJB 3.0 spec (not yet EJB 3 / Java EE 5 compliant) and &lt;a href="http://hibernate.org/"&gt;Hibernate&lt;/a&gt; 3.2 that is JPA 1.0 compliant to see whether the plug ability story is real! Oracle Application Server by default uses TopLink Essentials as the JPA provider. Note that TopLink Essentials is the Reference Implementation for the JPA spec.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;Loading the Hibernate Libraries in the server&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;In order to use Hibernate as a pluggable persistence provider, you have to make sure that Hibernate Entity Manager and related libraries are made available to the container class path.&lt;br /&gt;&lt;br /&gt;I created a shared library in OC4J named Hibernate and uploaded the required jars. Following is the definition of the shared library:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&amp;lt;shared-library name="Hibernate" version="3.2"&amp;gt;&lt;br /&gt;&amp;lt;code-source path="hibernate-entitymanager.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="hibernate3.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="jboss-archive-browsing.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="dom4j-1.6.1.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="hibernate-annotations.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="javassist.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="commons-collections-2.1.1.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="ehcache-1.2.3.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="c3p0-0.9.1.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="concurrent-1.3.2.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="cglib-2.1.3.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="asm.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="asm-attrs.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="antlr-2.7.6.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="commons-logging-1.0.4.jar"/&amp;gt;&lt;br /&gt;&amp;lt;code-source path="log4j-1.2.11.jar"/&amp;gt;&lt;br /&gt;&amp;lt;/shared-library&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Make sure that application imports the shared library. You can do so by either importing the library during deployment or packaging an orion-application.xml as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3366ff;"&gt;&amp;lt;orion-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/orion-application-10_0.xsd" deployment-version="10.1.3.1.0" default-data-source="jdbc/OracleDS" component-classification="external"&lt;br /&gt;schema-major-version="10" schema-minor-version="0" &amp;gt;&lt;br /&gt;&amp;lt;imported-shared-libraries&amp;gt;&lt;br /&gt;&amp;lt;import-shared-library name="Hibernate"/&amp;gt;&lt;br /&gt;&amp;lt;/imported-shared-libraries&amp;gt;&lt;br /&gt;&amp;lt;/orion-application&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;Configuring the Persistence Unit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You need to configure the persistence unit to specify the persistence provider and other vendor specific properties in the persistence.xml. For my test application I created a simple entity class and packaged the following persistence.xml in my application that uses Hibernate 3.2 as the JPA provider.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3366ff;"&gt;&amp;lt;persistence&amp;gt;&lt;br /&gt;&amp;lt;persistence-unit name="howto"&amp;gt;&lt;br /&gt;&amp;lt;jta-data-source&amp;gt;jdbc/OracleDS&amp;lt;/jta-data-source&amp;gt;&lt;br /&gt;&amp;lt;provider&amp;gt;org.hibernate.ejb.HibernatePersistence&amp;lt;/provider&amp;gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;lt;property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.OC4JTransactionManagerLookup"/&amp;gt;&lt;br /&gt;&amp;lt;property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" /&amp;gt;&lt;br /&gt;&amp;lt;property name="hibernate.hbm2ddl.auto" value="create-drop"/&amp;gt;&lt;br /&gt;&amp;lt;property name="hibernate.show_sql" value="true" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&amp;lt;/persistence-unit&amp;gt;&lt;br /&gt;&amp;lt;/persistence&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Note that in above I set provider class to org.hibernate.ejb.HibernatePersistence that tells the container to use Hibernate 3.2 as the persistence provider instead of using TopLink Essentials as the JPA provider.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#333399;"&gt;&lt;strong&gt;Access to Transaction Manager&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The primary reason behind the pluggable persistence provider is to provide facility to use JPA with a container managed Entity Manager and hence Hibernate needs to access the JTA Transaction Manager of the container.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hibernate 3.2 does not use the JTA &lt;a href="http://java.sun.com/javaee/5/docs/api/javax/transaction/TransactionSynchronizationRegistry.html"&gt;TransactionSynchronizationRegistry&lt;/a&gt; whose sole purpose is for such integration.&lt;br /&gt;&lt;br /&gt;Instead it provides classes for each application server that looks up the Transaction Manager.&lt;br /&gt;For example,&lt;a href="http://java.sun.com/javaee/5/docs/api/javax/transaction/TransactionSynchronizationRegistry.html"&gt;org.hibernate.transaction.OC4JtransactionManagerLookup &lt;/a&gt;is provided with Hibernate as a persistence property to lookup OC4J’s transaction manager as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3366ff;"&gt;&amp;lt;property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.OC4JTransactionManagerLookup"/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;If you want to use another application server then you have to the class for that server.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#333399;"&gt;Deploy and Run Your Application&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can package your entities and then deploy to the server&lt;br /&gt;&lt;br /&gt;Now after you deploy your application into OC4J you should be able to run your application. If you used the property &lt;span style="font-family:courier new;color:#3333ff;"&gt;hibernate.show_sql&lt;/span&gt; to &lt;span style="font-family:courier new;color:#3333ff;"&gt;true&lt;/span&gt;, you will see similar output from Hibernate in your console.&lt;br /&gt;&lt;br /&gt;07/01/30 12:11:54 Hibernate: insert into EMP (ename, sal, EMPNO) values (?, ?, ?&lt;br /&gt;)&lt;br /&gt;07/01/30 12:11:55 Hibernate: select employee0_.EMPNO as EMPNO0_0_, employee0_.en&lt;br /&gt;ame as ename0_0_, employee0_.sal as sal0_0_ from EMP employee0_ where employee0_&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#333399;"&gt;Conclusion&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I did some testing and the application works as expected and hence I conclude EJB 3 delivers on the plug-ability story and &lt;a href="http://www.oracle.com/technology/tech/java/oc4j/index.html"&gt;Oracle Application Server 10g &lt;/a&gt;is Hot Pluggable!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-4116725973422359721?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/4116725973422359721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=4116725973422359721' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4116725973422359721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/4116725973422359721'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/01/using-hibernate-as-pluggable-ejb-3-jpa.html' title='Using Hibernate as a Pluggable EJB 3 JPA Provider'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-579954718552203876</id><published>2007-01-22T12:15:00.000-08:00</published><updated>2007-01-22T12:57:16.593-08:00</updated><title type='text'>Using global-jndi-lookup-enable to lookup EJBs across applications</title><content type='html'>OC4J 10.1.3.1 allows lookup of EJBs across application by enabling the global JNDI lookup.&lt;br /&gt;&lt;br /&gt;To use the global JNDI feature in OC4J, first you have to enable it.&lt;br /&gt;1. Using a text editor, open config/server.xml.&lt;br /&gt;2. Within the &lt;span style="font-family:georgia;"&gt;&amp;lt;application-server&amp;gt;&lt;/span&gt; element, add the global-jndi-lookup-enabled attribute and set it to true as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#000099;"&gt;&amp;lt;application-server global-jndi-lookup-enabled="true"&amp;gt;&lt;br /&gt;&amp;lt;/application-server&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;3. Save and close server.xml.&lt;br /&gt;&lt;br /&gt;4. Restart the application server.&lt;br /&gt;&lt;br /&gt;5. Deploy application that contains the EJB. Let us say the application name is APP2 that contains a remote EJB with JNDI location “EmployeeFacadeBean”.&lt;br /&gt;&lt;br /&gt;To find the JNDI location look at the generated orion-ejb-jar.xml in the server’s application deployment directory. To configure a different JNDI location package an orion-ejb-jar.xml as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;session-deployment name="EmployeeFacadeBean"&amp;gt;&lt;br /&gt;name="EmployeeFacadeBean" location="EmployeeFacadeBean"&lt;br /&gt;&lt;br /&gt;&amp;lt;/session-deployment &amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The default JNDI name is the name of the remote interface of the session bean configured using the &lt;span style="font-family:courier new;"&gt;&lt;strong&gt;ejb-name&lt;/strong&gt;&lt;/span&gt; element in ejb-jar.xml or &lt;span style="font-family:courier new;"&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/span&gt; element of &lt;span style="font-family:courier new;"&gt;@Stateless&lt;/span&gt; or &lt;span style="font-family:courier new;"&gt;@Stateful&lt;/span&gt; annotations.&lt;br /&gt;&lt;br /&gt;The client application that looks up the EJB must package the remote, home, interfaces to look up the remote EJB.&lt;br /&gt;&lt;br /&gt;You can lookup the EJB from the client application using the JNDI location as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#000099;"&gt;Context ctx = new InitialContext();&lt;br /&gt;employeeFacade = (EmployeeFacade) ctx.lookup("EmployeeFacadeBean");&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Now you deploy your client application and the application should be able to lookup the EJB in APP2!&lt;br /&gt;&lt;br /&gt;If you want to use in OC4J 10.1.3.0.0 then make sure that you apply 10.1.3.1 patchset!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-579954718552203876?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/579954718552203876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=579954718552203876' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/579954718552203876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/579954718552203876'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/01/using-global-jndi-lookup-enable-to.html' title='Using global-jndi-lookup-enable to lookup EJBs across applications'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-1606888625989858576</id><published>2007-01-18T22:01:00.000-08:00</published><updated>2007-01-18T22:07:14.118-08:00</updated><title type='text'>EJB 3 In Action: Code Samples</title><content type='html'>The code samples of &lt;a href="http://www.manning.com/panda/"&gt;EJB 3 In Action&lt;/a&gt; are now available from the Manning web site. We have made the source code available for Java EE SDK (Glassfish) and Oracle Application Server. You can download the code samples from the &lt;a href="http://www.manning.com/panda/"&gt;book site.  &lt;/a&gt;All chapters of the book are available at the book site through the Manning's MEAP program. So ahead an pre-order a copy for yourself and read the final drafts of the book from the &lt;a href="http://www.manning.com/panda/"&gt;Manning site&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-1606888625989858576?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/1606888625989858576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=1606888625989858576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1606888625989858576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/1606888625989858576'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/01/ejb-3-in-action-code-samples.html' title='EJB 3 In Action: Code Samples'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-2476696495000652378</id><published>2007-01-08T11:07:00.000-08:00</published><updated>2007-01-08T11:08:16.616-08:00</updated><title type='text'>Blogger ATOM Woes and RSS URL for blogger !</title><content type='html'>My transition to Blogger has been smooth except few hiccups. Few weeks back Blogger switched to ATOM 1.0 by default and many blog aggregators that do not support ATOM yet (such as Javablogs.com) stopped taking updates from my Blog. After a lot of research I found that Blogger provides an URL with RSS 2.0 feeds. For example you can get RSS 2.0 feed for my blog at http://debupanda.blogspot.com/feeds/posts/default?alt=rss&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-2476696495000652378?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/2476696495000652378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=2476696495000652378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2476696495000652378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/2476696495000652378'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/01/blogger-atom-woes-and-rss-url-for.html' title='Blogger ATOM Woes and RSS URL for blogger !'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-3431782931482666782</id><published>2007-01-08T10:55:00.000-08:00</published><updated>2007-01-08T10:58:15.305-08:00</updated><title type='text'>Happy New Year!!</title><content type='html'>Wish you a very happy and prosperous 2007! Now that I’m back from 5 weeks trip to India and back from jet lag. Ready to Blog, Stay Tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-3431782931482666782?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/3431782931482666782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=3431782931482666782' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3431782931482666782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/3431782931482666782'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2007/01/happy-new-year.html' title='Happy New Year!!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-451771470483878465</id><published>2006-12-01T22:57:00.000-08:00</published><updated>2006-12-01T23:05:44.553-08:00</updated><title type='text'>@IndictThreads Java Conference</title><content type='html'>I've been traveling in India for about 10 days now. Now I'm in Poona attending the &lt;a href="http://conference.indicthreads.com/"&gt;IndicThreads Java conference&lt;/a&gt;. Great work by Harshad Oak and his crew in arranging such a Java conference in India. I spoke yesterday and my session was tittled &lt;a href="http://conference.indicthreads.com/content/view/3/#debu"&gt;EJB 3 in Action&lt;/a&gt; and it was a house full. I will have a Q &amp; A session along with Gavin King on EJB3 / JPA later today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-451771470483878465?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/451771470483878465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=451771470483878465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/451771470483878465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/451771470483878465'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/12/indictthreads-java-conference.html' title='@IndictThreads Java Conference'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-116292575026408651</id><published>2006-11-07T10:37:00.000-08:00</published><updated>2006-11-07T10:55:50.426-08:00</updated><title type='text'>Spring/EJB 3 HowTos/Code Examples</title><content type='html'>I built couple of howtos  for using Spring 2.0 with EJB 3/JPA and these have been referenced from Spring's &lt;a href="http://www.springframework.org/"&gt;home page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.springframework.org/node/367"&gt;How To: Using EJB 3.0 Session Beans with Spring Beans&lt;/a&gt; : Zip with Code examples In &lt;a href="http://www.oracle.com/technology/tech/java/oc4j/10131/how_to/how-to-ejb30-spring/how-to-ejb30-spring.zip"&gt;OTN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.springframework.org/node/366"&gt;How To Use EJB 3.0 and Java Persistence API with Spring &lt;/a&gt; : Zip with Code examples In &lt;a href="http://www.oracle.com/technology/tech/java/oc4j/10131/how_to/how-to-ejb30-jpa-spring/how-to-ejb30-jpa-spring.zip"&gt;OTN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please note that this works with &lt;a href="http://www.oracle.com/technology/tech/java/oc4j/index.html"&gt;Oracle Application Server 10g 10.1.3.1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These samples also work with &lt;a href="https://glassfish.dev.java.net/"&gt;Glassfish&lt;/a&gt; by tweaking the packaging a little bit. You have to just make sure that you modify the packaging to include Commons Logging jars required by Spring. If you want the build script for Glassfish please drop me an email and I will send that to you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-116292575026408651?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/116292575026408651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=116292575026408651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116292575026408651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116292575026408651'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/11/springejb-3-howtoscode-examples.html' title='Spring/EJB 3 HowTos/Code Examples'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-116248814186555812</id><published>2006-11-02T09:16:00.000-08:00</published><updated>2006-11-02T09:23:09.826-08:00</updated><title type='text'>My Book @ Amazon.com</title><content type='html'>Finally my book &lt;a href="http://www.manning.com/panda/"&gt;EJB 3 In Action &lt;/a&gt;is available at &lt;a href="http://www.amazon.com/Ejb-3-Action-Debu-Panda/dp/1932394931/sr=8-1/qid=1162487189/ref=sr_1_1/104-8017159-4576724?ie=UTF8&amp;amp;s=books"&gt;Amazon.com &lt;/a&gt;for pre-order. The book has already been available for purchase under &lt;a href="http://www.manning.com/panda/"&gt;Manning's MEAP program &lt;/a&gt;that provides ability to read pre-production version of the book today!&lt;br /&gt;&lt;br /&gt;Pre-order at &lt;a href="http://www.manning.com/panda/"&gt;Amazon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pre-order and &lt;a href="http://www.manning.com/panda/"&gt;MEAP at publisher's website&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-116248814186555812?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/116248814186555812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=116248814186555812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116248814186555812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116248814186555812'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/11/my-book-amazoncom.html' title='My Book @ Amazon.com'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-116241199840238751</id><published>2006-11-01T11:59:00.000-08:00</published><updated>2006-11-02T04:04:37.503-08:00</updated><title type='text'>EJB 3 Extensions in Oracle Application Server 10g 10.1.3.1</title><content type='html'>Oracle has built some extensions to its EJB 3 implementation in &lt;a href="http://www.oracle.com/technology/tech/java/ejb30.html"&gt;Oracle Application Server 10.1.3.1&lt;/a&gt; to simplify developers' life. In this blog I will uncover these extensions.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;Vendor Specific Annotations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We have added three proprietary annotations &lt;span style="font-family:courier new;"&gt;@StatelessDeployment&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;@StatefulDeployment&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;@MessageDrivenDeployment&lt;/span&gt; that you can use to specify Oracle specific configurations for your bean. This frees you from having to deal with vendor specific descriptor. For example, you can use the &lt;span style="font-family:courier new;"&gt;@StatelessDeployment&lt;/span&gt; annotation to specify pooling information for an EJB as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;import oracle.j2ee.ejb.StatelessDeployment;&lt;br /&gt;&lt;br /&gt;@StatelessDeployment(minInstances = 100, maxInstances = 500)&lt;br /&gt;@Stateless&lt;br /&gt;public class HelloBean implements Hello {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;..&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Additionally we have provided annotations to be used with EJB 3 web services (that use web services metadata annotations) : &lt;span style="font-family:courier new;"&gt;@Deployment, @Schema, @WSIFEJBBinding&lt;/span&gt;, etc. The @Deployment annotation is most important annotation of these and can be used to specify portName, contextPath or expose the web service as a REST web service.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;@Deployment(contextPath="ejb30", uriPath="ejb30-simple", portName="MyWebService")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;@WebService&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;@Statelesspublic class HelloBean{&lt;br /&gt;..&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You can refer to the &lt;a href="http://download-west.oracle.com/docs/cd/B31017_01/web.1013/b28812/toc.htm."&gt;Oracle Annotations Java Doc for details about these annotations&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;Simplification to Use JPA inside container&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We have added several small knobs here and there to simplify use of JPA inside container.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;strong&gt;persistence.xml is optional in EJB Modules&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JPA requires persistence.xml for configuring a persistence unit. This is really a headache for developers when using entities in an EJB module and has only one persistence unit. Oracle Application Server makes it optional and will search for entities in the ejb-jar and configure a default persistence unit for you. The data-source will be defaulted to the default data source configured for the application or server. This will also help customers using EJB 3 in OracleAS 10.1.3.0 to migrate to OracleAS 10.1.3.1 easily.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;strong&gt;Using @Resource annotationInjecting container-managed EntityManager&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Many developers have asked why can’t they use @Resource annotation to inject a container managed EntityManager? It seems really odd that you can inject other resources such as DataSource but not EntityManager. The real answer is EntityManager is not a resource and you may have more than one persistence unit. If you have only one persistence unit in your application OracleAS has extension to support injection of EntityManager using &lt;span style="font-family:courier new;"&gt;@Resource&lt;/span&gt; as follows:&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;@Resource EntityManager em;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This also helps customer to migrate their applications to OracleAS 10.1.3.1 from earlier release.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;strong&gt;persistence.xml in WEB-INF&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you have used entities in the web module then you know that Java EE 5 requires packaging of &lt;span style="font-family:courier new;"&gt;persistence.xml&lt;/span&gt; in the WEB-INF/classes/META-INF directory. It is really confusing for developers because all descriptors for web module are placed in WEB-INF directory. Why not persistence.xml you may ask? There is a real reason (and there was hot discussion in the EJB3 expert group) for this that I will discuss in a future blog. However it is worth mentioning here that OracleAS makes it simple and allow packaging of persistence.xml in WEB-INF/ directory and if found it will be considered to similar to packaging it in WEB-INF/classes/META-INF directory.&lt;br /&gt;&lt;br /&gt;Hope these extensions make your life easier. If you have an idea for a feature that you would like to see in OracleAS do not hesitate to send that to me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-116241199840238751?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/116241199840238751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=116241199840238751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116241199840238751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116241199840238751'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/11/ejb-3-extensions-in-oracle-application.html' title='EJB 3 Extensions in Oracle Application Server 10g 10.1.3.1'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-116193227176837236</id><published>2006-10-26T23:41:00.000-07:00</published><updated>2006-11-01T09:39:45.606-08:00</updated><title type='text'>Is BEA far ahead in Java EE 5 game?</title><content type='html'>&lt;span style="font-family:arial;"&gt;It was interesting to read &lt;/span&gt;&lt;a href="http://www.ddj.com/dept/java/193302854"&gt;&lt;span style="font-family:arial;"&gt;this article &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;in Dr Dobb's Java portal (and &lt;/span&gt;&lt;a href="http://www.infoq.com/news/javaee5-appserver-status"&gt;&lt;span style="font-family:arial;"&gt;InfoQ' s thread&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; ) that noted that BEA is ahead of others in the Java EE 5 game. In my personal opinion (note that this blog is my personal opinion and nothing to do with my employer's), these are really biased articles and reflects the mindset of the writer "BEA is always ahead!"&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;As per the article EJB 3/JPA covers significant portions of Java EE 5 and hence the reality shows otherwise. Oracle and JBoss had EJB 3 previews for years (yes years, we released our first EJB 3 preview in early March 2005, See &lt;/span&gt;&lt;a href="http://radio.weblogs.com/0135826/2005/03/05.html"&gt;&lt;span style="font-family:arial;"&gt;my announcement&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;) and both JBoss and Oracle have production release of EJB 3/JPA in their application server. Look for complete EJB 3/ JPA support in &lt;/span&gt;&lt;a href="http://www.oracle.com/technology/tech/java/oc4j/index.html"&gt;&lt;span style="font-family:arial;"&gt;Oracle Application Server 10g 10.1.3.1&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; whereas BEA just has &lt;/span&gt;&lt;a href="http://commerce.bea.com/showproduct.jsp?family=WLS&amp;major=EJB30Tech&amp;amp;minor=-1"&gt;&lt;span style="font-family:arial;"&gt;tech preview &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;of a subset of EJB 3 specification. They have support for Java Persistence API in Kodo but the article in DDJ also acknowledges Kodo is not yet integrated with the WebLogic and hence you cannot use its full power. However Oracle’s JPA implementation &lt;/span&gt;&lt;a href="http://www.oracle.com/technology/products/ias/toplink/index.html"&gt;&lt;span style="font-family:arial;"&gt;TopLink Essentials&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; is totally integrated with Oracle's Java EE container (OC4J) and is also shipped with Glassfish, TmaxSoft and popular Spring 2.0!.&lt;br /&gt;&lt;br /&gt;Beside full implementation of EJB 3 and JPA, Oracle has also support for &lt;a href="http://download-west.oracle.com/docs/cd/B31017_01/web.1013/b28959/annotations.htm#sthref248"&gt;&lt;span style="font-family:arial;"&gt;Web services metadata&lt;/span&gt;&lt;/a&gt;, &lt;span style="font-family:arial;"&gt;annotations support in the Servlet (2.5) and  application client container in &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Oracle Application Server (10.1.3.1). Above all these features work in a truly integrated fashion that customers can use in production today. You cannot use JSR-181 annotations with an EJB 3 session bean in a production environment with WebLogic but can do that today with OracleAS !&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;Try running a complicated application such as &lt;/span&gt;&lt;a href="http://www.oracle.com/technology/tech/java/oc4j/10131/how_to/how-to-ejb30-adventurebuilder-wsm/doc/how-to-ejb30-adventurebuilder-wsm.html"&gt;&lt;span style="font-family:arial;"&gt;Java Adventure Builder &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;that uses EJB 3 /JPA / Web services metadata in the WebLogic Tech Preview. If you can’t do these things then what made the author to assume that BEA is ahead of JBoss and Oracle in the Java EE 5 game.&lt;br /&gt;&lt;br /&gt;It truly frustrates me when seeing such biased articles because many gullible readers treat such articles as bible.&lt;br /&gt;&lt;br /&gt;Many Oracle customers have started deploying EJB 3.0/JPA applications in production. Can you do that with BEA? If not then how can you say that they are ahead in the game!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-116193227176837236?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/116193227176837236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=116193227176837236' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116193227176837236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116193227176837236'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/10/is-bea-far-ahead-in-java-ee-5-game.html' title='Is BEA far ahead in Java EE 5 game?'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-116189158290955275</id><published>2006-10-26T12:31:00.000-07:00</published><updated>2006-10-26T12:41:03.713-07:00</updated><title type='text'>EJB 3 In Action: What's what in EJB 3</title><content type='html'>Manning has made available 9 chapters of &lt;a href="http://manning.com/panda/"&gt;EJB 3 In Action &lt;/a&gt;as part of MEAP Release. Draft version of chapter 1 “&lt;a href="http://www.manning.com/panda/panda_meapch1.pdf"&gt;What’s what in EJB 3&lt;/a&gt;" is available for free. Take a look at this at &lt;a href="http://manning.com/panda/"&gt;http://manning.com/panda/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You will probably like the beginning story of an Indian boy named Sadhu and it's comparison with EJB’s incarnations. You can access the chapter at http://manning.com/panda/.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-116189158290955275?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/116189158290955275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=116189158290955275' title='42 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116189158290955275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116189158290955275'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/10/ejb-3-in-action-whats-what-in-ejb-3.html' title='EJB 3 In Action: What&apos;s what in EJB 3'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>42</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-116184543992078773</id><published>2006-10-25T23:44:00.000-07:00</published><updated>2006-10-26T08:59:08.176-07:00</updated><title type='text'>Java annotations support in the web container</title><content type='html'>&lt;span style="font-family:arial;"&gt;Servlet 2.5 (a part of Java EE 5) provides support for Java metadata annotations.  You can use annotations for callback methods, security,  injection of resources, EJB and web service reference, EntityManager, etc. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;You can also package a persistence module (EJB3 JPA entities) as a part of a WAR module.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:130%;color:#000099;"&gt;Injection of Resources&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can use the &lt;span style="font-family:courier new;"&gt;@Resource&lt;/span&gt; annotation to inject resource references such as Data Source e.g. you can inject a Data Source as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;@Resource(name="jdbc/OracleDS")&lt;br /&gt;private DataSource dataSource;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;&lt;strong&gt;&lt;span style="font-family:arial;color:#000099;"&gt;CallBack Methods&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/span&gt;You can use &lt;span style="font-family:courier new;"&gt;@PostConstruct&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;@PreDestroy&lt;/span&gt; annotations with any arbitrary method to behave like&lt;span style="font-family:courier new;"&gt; init()&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;destroy()&lt;/span&gt; methods respectively. For example you can have a method named openConnection that opens a connection as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;@PostConstruct&lt;br /&gt;public void openConnection() {&lt;br /&gt;try {&lt;br /&gt;connection = dataSource.getConnection();&lt;br /&gt;} catch (SQLException sqle) {&lt;br /&gt;sqle.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Things to Remember&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note that annotations are supported only with managed classes such as servlet, filters, listeners, etc. You cannot use annotations with regular POJOs.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You have to make sure that you have set version=”2.5” in the web.xml for the web-app tag as follows: ...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;&lt;web-app version="2.5"&gt; ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;&lt;/web-app&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you have set that to a lower version or not set then container will not search for annotations and you will probably get a NullPointerException at run time when trying to use a field assuming it’s value to populated using injection.&lt;br /&gt;&lt;br /&gt;OC4J 10.1.3.1 supports all Servlet 2.5 annotations that includes &lt;span style="font-family:courier new;"&gt;@EJB, @Resource, @Resources, @PostConstruct, @PreDestroy, @PersistenceUnit(s), @PersistenceContext(s), @WebServiceRef, @DeclaresRoles, @RunAs&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;It also allows packaging of EJB 3/JPA entities in the web module.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;Missing annotations ..!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I  think one think that is missing is that there are annotations to specify a type of an object similar to &lt;span style="font-family:courier new;"&gt;@Stateless&lt;/span&gt; annotation in EJB 3.0.&lt;br /&gt;&lt;br /&gt;For example, you CANNOT mark a POJO to be a servlet as follows:&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;@Servlet &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;public class MyServlet&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;{ … &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I would like to see annotations such as &lt;span style="font-family:courier new;"&gt;@Servlet&lt;/span&gt; or &lt;span style="font-family:courier new;"&gt;@Filter&lt;/span&gt; in future version of Servlet specification.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;More Info&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can find more about Servlet annotations in &lt;a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index.html"&gt;Servlet 2.5 spec &lt;/a&gt;or &lt;a href="http://download-west.oracle.com/docs/cd/B31017_01/web.1013/b28959/toc.htm"&gt;OC4J 10.1.3.1 documentation&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-116184543992078773?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/116184543992078773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=116184543992078773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116184543992078773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116184543992078773'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/10/java-annotations-support-in-web.html' title='Java annotations support in the web container'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-116136055545092254</id><published>2006-10-20T08:55:00.001-07:00</published><updated>2006-10-20T09:09:15.930-07:00</updated><title type='text'>Oracle Application Server 10.1.3.1 Goes Production</title><content type='html'>Oracle announced production release of Oracle Application Server10g 10.1.3.1. This release of OC4J implements significant features of Java EE 5.0 that includes full implementation EJB 3.0, JPA 1.0, Common Metadata annotations 1.0, Servlet 2.5 annotations, annotations support in the Application Client Container support and web services metadata.&lt;br /&gt;&lt;br /&gt;You can download from OC4J home page at &lt;a href="http://www.oracle.com/technology/tech/java/oc4j/index.html"&gt;http://www.oracle.com/technology/tech/java/oc4j/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/tech/java/ejb30.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-116136055545092254?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/116136055545092254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=116136055545092254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116136055545092254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116136055545092254'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/10/oracle-application-server-10131-goes_20.html' title='Oracle Application Server 10.1.3.1 Goes Production'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-116136025949316844</id><published>2006-10-20T08:55:00.000-07:00</published><updated>2006-10-20T09:04:19.506-07:00</updated><title type='text'>Oracle Application Server 10.1.3.1 Goes Production</title><content type='html'>Oracle announced production release of Oracle Application Server10g 10.1.3.1. This release of OC4J implements significant features of Java EE 5.0 that includes full implementation EJB 3.0, JPA 1.0, Common Metadata annotations 1.0, Servlet 2.5 annotations, annotations support in the Application Client Container support and web services metadata.&lt;br /&gt;&lt;br /&gt;You can download from OC4J home page  at &lt;a href="http://www.oracle.com/technology/tech/java/oc4j/index.html"&gt;http://www.oracle.com/technology/tech/java/oc4j/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/tech/java/ejb30.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-116136025949316844?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/116136025949316844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=116136025949316844' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116136025949316844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116136025949316844'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/10/oracle-application-server-10131-goes.html' title='Oracle Application Server 10.1.3.1 Goes Production'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-116075656079402959</id><published>2006-10-13T09:19:00.000-07:00</published><updated>2006-10-13T09:23:42.543-07:00</updated><title type='text'>Early Access Edition of EJB 3 In Action</title><content type='html'>I participated in several beta and early access testing of products, reviewed books but never participated in an Early Access Program for a book. And certainly &lt;a href="http://manning.com/panda/"&gt;Manning Early Access Program &lt;/a&gt;sounds interesting.&lt;br /&gt;&lt;br /&gt;An early release version of my book &lt;a href="http://manning.com/panda/"&gt;EJB 3 Action&lt;/a&gt; is now available at &lt;a href="http://manning.com/panda/"&gt;http://manning.com/panda/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's a little better form of pre-ordering from Amazon or a publisher web site. You immediately get access to the source or final pre-production version of the book online and &lt;a href="http://manning.com/panda/"&gt;Manning Publications&lt;/a&gt; will ship you a book as soon as book is published. In the mean time you are the beta testers of the book (:&lt;br /&gt;&lt;br /&gt;I will appreciate you participate in this program, pre-order a copy and help find any errors in the book (:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-116075656079402959?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/116075656079402959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=116075656079402959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116075656079402959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/116075656079402959'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/10/early-access-edition-of-ejb-3-in.html' title='Early Access Edition of EJB 3 In Action'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-115877412380577048</id><published>2006-09-20T10:24:00.000-07:00</published><updated>2006-09-20T10:42:03.833-07:00</updated><title type='text'>JavaZone @Oslo!</title><content type='html'>&lt;p style="font-family: arial;" class="MsoNormal"&gt;My trip to Oslo was very nice. The weather was pretty good there. It was my first talk at JavaZone. It is really a nice Java conference. It's certainly better, bigger than the conferences like TheServerSide symposium. About 1400 people attended.&lt;br /&gt;&lt;br /&gt;All familiar conference presenters Rod Johnson, Joshua Bloch, Floyd, Patrick Linskey, etc were presenting there.&lt;br /&gt;&lt;br /&gt;One thing that I liked about the conference that there it was free from keynote. My presentation Migration to EJB3 was houseful! You can download my presentation from JavaZone &lt;a href="http://217.199.33.59/jz/2006/slides/4472.pdf"&gt;website&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-115877412380577048?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/115877412380577048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=115877412380577048' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115877412380577048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115877412380577048'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/09/javazone-oslo.html' title='JavaZone @Oslo!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-115767421239361351</id><published>2006-09-07T17:07:00.000-07:00</published><updated>2006-09-07T17:10:12.406-07:00</updated><title type='text'>My upcoming talks at JavaZone and OracleDevelop</title><content type='html'>I’ll be presenting in &lt;a href="http://javazone.no/"&gt;JavaZone, &lt;/a&gt;Norway next week. Hope to see you if you are attending the conference.  I will deliver a presentation on &lt;a href="http://www.javazone.no/web/show.do?page=92&amp;articleid=4472"&gt;Oracle Develop &lt;/a&gt;conference held Oct 23-25.  . This conference is primarily for developers using Oracle platform and there will be many talks for developers. There are many great speakers including Rod Johnson who will present in the Oracle Develop conference.&lt;br /&gt;&lt;br /&gt;Hope to see you in one of these conferences!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-115767421239361351?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/115767421239361351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=115767421239361351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115767421239361351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115767421239361351'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/09/my-upcoming-talks-at-javazone-and.html' title='My upcoming talks at JavaZone and OracleDevelop'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-115644556935999954</id><published>2006-08-24T11:40:00.000-07:00</published><updated>2006-08-24T11:54:15.240-07:00</updated><title type='text'>Using EJB 3.0 Message Driven Bean with JCA-Resource Adapters</title><content type='html'>&lt;span style="font-family:arial;"&gt;MDB was the only bean type that did not suffer  obesity problems with EJB 2.x. It was simple to develop and use and it was liked by most developers.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;For many developers the verbose XML descriptor was still a sour-point. EJB 3.0 further simplified message driven bean by removing the requirement to use descriptors and you can use annotations to specify the activation config properties. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#3333ff;"&gt;An Example MDB with EJB 3.0 Annotations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A simple MDB will look like as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;@MessageDriven(activationConfig = { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;@ActivationConfigProperty(propertyName = "ConnectionFactoryJndiName", propertyValue = "jms/TopicConnectionfactory"), &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;@ActivationConfigProperty(propertyName = "DestinationName", propertyValue = "jms/demoTopic"), &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;@ActivationConfigProperty(propertyName = "DestinationType", propertyValue = "javax.jms.Topic"), &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;@ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "RECIPIENT = 'MDB'")&lt;br /&gt;})&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;public class MessageLogger implements MessageListener{..} &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This problem with MDB is that it works will the default JMS provider of the container i.e . in-memory JMS provider of OracleAS.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;color:#333399;"&gt;Using MDB with a JCA-compliant Resource Adapter&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;There are many instances probably you want to use a messaging provider (JMS or non-JMS) plugged-in using a JCA-compliant connector or resource adapter. Let us assume that OracleAS JMS wit the global connector (named OracleASjms) packaged with Oracle AS. Unfortunately EJB or JCA does not standardize configurations for using a resource adapter and you have to depend upon a proprietary feature such as vendor specific annotation or activation config property to designate the resource adapter to be used with your MDB. Oracle provides a vendor specific annotation &lt;span style="font-family:courier new;color:#333399;"&gt;(@oracle.j2ee.ejb.MessageDrivenDeployment&lt;/span&gt;) to specify Oracle specific configuration properties and you need to use resourceAdapter element to specify the resource adapter that you intend to use. For example you can modify the above MDB as follows to use the OracleASjms global connector to use the In-memory JMS as follows:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;@oracle.j2ee.ejb.MessageDrivenDeployment(resourceAdapter="OracleASjms")@MessageDriven(activationConfig = { &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;@ActivationConfigProperty(propertyName = "ConnectionFactoryJndiName", propertyValue = "OracleASjms/MyTCF"), &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;@ActivationConfigProperty(propertyName = "DestinationName", propertyValue = "jms/demoTopic"), &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;@ActivationConfigProperty(propertyName = "DestinationType", propertyValue = "javax.jms.Topic"), &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;@ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "RECIPIENT = 'MDB'")&lt;br /&gt;})&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;public class MessageLogger implements MessageListener {.}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Note that we have modified the ConnectionFactoryJndiName to use a pre-configured connection factory OracleASjms/MyTCF.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;color:#333399;"&gt;Using a non-JMS Connector&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Let us assume that you want to use your own non-JMS resource adapter let us say thirdra then your EJB 3.0 MDB will look as follows:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;import oracle.j2ee.ejb.MessageDrivenDeployment;&lt;br /&gt;import thirdra.common.ThirdListener;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;@MessageDriven(name="thirdmdb",messageListenerInterface=ThirdListener.class)@MessageDrivenDeployment(resourceAdapter="thirdra")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;public class MessageLogger&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Isn’t is simpler than EJB 2.x where you had to handle at least two XML descriptors? If you want to use mix-n-match with descriptor (ejb-jar.xml) make sure that version is set to "3.0" in your ejb-jar element otherwise annotations will not be parsed and container will treat it as an EJB 2.1 descriptor.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;However I strongly feel that specifying a resource adapter should be standardized by the future release of specification.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-115644556935999954?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/115644556935999954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=115644556935999954' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115644556935999954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115644556935999954'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/08/using-ejb-30-message-driven-bean-with.html' title='Using EJB 3.0 Message Driven Bean with JCA-Resource Adapters'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-115580199518119888</id><published>2006-08-17T00:28:00.000-07:00</published><updated>2006-08-17T10:15:36.953-07:00</updated><title type='text'>Top 5 features you would care about in OC4J 10.1.3.1!</title><content type='html'>&lt;span style="font-family: arial;"&gt;OC4J 10.1.3.1 Developer Preview was released couple of days back. OC4J 10.1.3.0 was released in January that had a truckload of features. A question that might comes to your mind: &lt;/span&gt;&lt;span style="font-style: italic; font-family: arial;"&gt;Is OC4J 10.1.3.1 a patch release? &lt;/span&gt;&lt;span style="font-family: arial;"&gt;From Java developer’s perspective OC4J 10.1.3.1 may not be feature-rich like OC4J 10.1.3.0. However it has a lot of features that you might care about.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;1.  It now has complete implementation of EJB 3.0/JPA final specifications. It means you will see several changes in the EJB container, that includes:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;EJB 3.0 Persistence now fully aligns with the spec.&lt;/li&gt;&lt;li&gt;Lifecycle listeners and Interceptors are aligned with the spec.&lt;/li&gt;&lt;li&gt;XML descriptors support is aligned with the spec.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;See the updated demos at &lt;a href="http://www.oracle.com/technology/tech/java/ejb30.html"&gt;EJB  3.0 Resource Center.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;2. We have added Oracle specific annotations for easier configurations. If you hate descriptors you have an option to make EJB configurations without having to use orion-ejb-jar.xml. Additionally we have added many proprietary enhancements to make usage of EJB 3.0 simpler. We have made persistence.xml optional in an ejb-jar module for packaging entities and use @Resource to inject the EntityManager for the default persistence unit. I will blog about these later.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;3. Dependency injection is supported in the application client container and web container. You can use JSR 250 annotations in the web container. and also you can package entities in the web container. Also we have added the library module support in the application level. You can add a lib directory in the EAR level and any jars put in the lib directory will available to all modules in the EAR.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;4. We implemented dynamic byte code generation for EJB wrappers and that greatly improves deployment of EJB applications. Most EJB applications should see between 30-70% improvement in deployment from OC4J 10.1.3 in identical configurations.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;5. We have added a lot of new ANT tasks to make your life easier e.g. creation of data sources, JMS objects, shared libraries, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Beside that we have a lot of bug fixes. So please try out and give us your feedback.&lt;br /&gt;&lt;br /&gt;Here is link again : http://www.oracle.com/technology/tech/java/oc4j/10131/index.html&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-115580199518119888?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/115580199518119888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=115580199518119888' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115580199518119888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115580199518119888'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/08/top-5-features-you-would-care-about-in.html' title='Top 5 features you would care about in OC4J 10.1.3.1!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-115567851813143664</id><published>2006-08-15T14:36:00.000-07:00</published><updated>2006-08-16T09:35:40.940-07:00</updated><title type='text'>Oracle SOA Suite - Complete EJB3 and JPA Support</title><content type='html'>&lt;span style="font-family: arial;"&gt;Yesterday&lt;/span&gt;&lt;span style="font-family:arial;"&gt; Oracle released &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.oracle.com/technology/software/products/ias/soapreview.html"&gt;Oracle Application Server 10g (10.1.3.1) Developer Preview&lt;/a&gt;&lt;span style="font-family:arial;"&gt;. The goal for this release to simplify development and deployment of service-oriented applications and hence it is termed as SOA Release.  The SOA suite provides complete set of service infrastructure components such as Enterprise Service Bus, BPEL, BAM and Web Services Manager for creating, deploying and managing services, all available in a single install.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If you are an enterprise java developer and do not care about SOA,  OracleAS 10.1.3.1 has something for you too. O It has complete support for EJB 3 and Java Persistence API and has annotations support in the Servlet container. OC4J 10.1.3.1 includes &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.oracle.com/technology/products/ias/toplink/JPA/index.html"&gt;TopLink Essentials&lt;/a&gt;&lt;span style="font-family:arial;"&gt; as the  EJB3 JPA Provider.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;You can download  &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.oracle.com/technology/software/products/jdev/index.html"&gt;JDeveloper 10.1.3.1&lt;/a&gt;&lt;span style="font-family:arial;"&gt; and  &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.oracle.com/technology/tech/java/oc4j/index.html"&gt;OC4J 10.1.3.1&lt;/a&gt;&lt;span style="font-family:arial;"&gt; standalone and to build and deploy  EJB3/JPA applications.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;See &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.oracle.com/technology/ejb3/index.html"&gt;EJB3 Resources&lt;/a&gt;&lt;span style="font-family:arial;"&gt; for updated howtos, samples, articles, etc.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-115567851813143664?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/115567851813143664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=115567851813143664' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115567851813143664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115567851813143664'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/08/oracle-soa-suite-complete-ejb3-and-jpa.html' title='Oracle SOA Suite - Complete EJB3 and JPA Support'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-115562693664172915</id><published>2006-08-14T23:47:00.000-07:00</published><updated>2006-08-15T06:08:25.816-07:00</updated><title type='text'>Developing a Spring-enabled Session bean</title><content type='html'>&lt;span style="font-family:arial;"&gt;In one of &lt;/span&gt;&lt;a style="font-family: arial;" href="http://radio.weblogs.com/0135826/2006/07/11.html#a206"&gt;my blog entries&lt;/a&gt;&lt;span style="font-family:arial;"&gt; last month I showed how you could access an EJB 3.0 Session bean from Spring 2.0 beans. One of the readers wanted to know whether it is possible to use Spring with EJB 3.0. Interestingly Spring documentation does not say anything about EJB 3.0 beans support with Spring 2.0. I managed to get this to working Spring 2.0 RC2 and in this article; I will show how you can develop a Spring-enabled EJB 3.0 Session bean.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:130%;" &gt;Spring-enabled EJB 3.0 Session bean.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Spring provides abstract classes such as &lt;span style="font-family:courier new;"&gt;org.springframework.ejb.support.AbstractStatelessSessionBean&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;org.springframework.ejb.support.AbstractStatefulSessionBean&lt;/span&gt; that you can use to build a Spring-enabled EJB 3.0 session bean. You have to extend the abstract session bean class and implement the &lt;span style="font-family:courier new;"&gt;onEjbcreate&lt;/span&gt; method where you can retrieve the required bean instance from the bean factory as in the following example: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;@Stateless&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;public class EmployeeFacadeBean extends&lt;br /&gt;AbstractStatelessSessionBean implements EmployeeFacade&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;EmployeeServiceBean empService;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    protected void onEjbCreate()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    empService = (EmployeeServiceBean)&lt;br /&gt;getBeanFactory().getBean("empService");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;     }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    public Employee addEmployee(String empName, double sal) {&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;        return empService.addEmployee(empName,sal);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;      }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;  ..&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Note that our stateless session bean &lt;span style="font-family:courier new;"&gt;EmployeeFacadeBean&lt;/span&gt; extends &lt;span style="font-family:courier new;"&gt;AbstractStatelessSessionBean&lt;/span&gt;. Note that we have implemented the &lt;span style="font-family:courier new;"&gt;onEjbCreate&lt;/span&gt; method that retrieves instance of &lt;span style="font-family:courier new;"&gt;EmployeeServiceBean&lt;/span&gt; from the bean factory.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:130%;" &gt;&lt;span style="font-family:arial;"&gt;The EJB deployment descriptor&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The application context is passed to the Session Bean by using an environment variable named &lt;span style="font-family:courier new;"&gt;ejb/BeanFactoryPath&lt;/span&gt; in the deployment descriptor (&lt;span style="font-family:courier new;"&gt;ejb-jar.xml&lt;/span&gt;) as follows:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;session&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;ejb-name&amp;gt;EmployeeFacadeBean&amp;lt;/ejb-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;env-entry&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;env-entry-name&amp;gt;ejb/BeanFactoryPath&amp;lt;/env-entry-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;env-entry-type&amp;gt;java.lang.String&amp;lt;/env-entry-type&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;env-entry-value&amp;gt;/howto-service.xml&amp;lt;/env-entry-value&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;/env-entry&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&amp;lt;/session&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Note that the &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;howto-service.xml&lt;/span&gt;&lt;span style="font-family:arial;"&gt; contains the bean factory configuration that we see next. The howto-service.xml is packaged in the ejb-jar module.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Wiring all together with Spring configuration &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;The howto-service.xml contains the Spring configuration.&lt;br /&gt;The &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;EmployeeServiceBean&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; uses EmployeeDAO that is injected using setter injection:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="color: rgb(102, 0, 204);"&gt;&amp;lt;beans&amp;gt;&lt;br /&gt;…&lt;br /&gt;&amp;lt;bean id="empService" class="oracle.ejb30.EmployeeServiceBean"&amp;gt;&lt;br /&gt;&amp;lt;property name="employeeDAO"&amp;gt;&lt;br /&gt;&amp;lt;ref bean="employeeDAO"&amp;gt;&lt;br /&gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;&amp;lt;/property&amp;gt;&lt;br /&gt;..&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Remember that the Spring enabled EJB 3.0 Session bean (EmployeeFacadeBean) invokes the EmployeeService bean from the bean factory&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;empService = (EmployeeServiceBean) getBeanFactory().getBean("empService");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;&lt;span style="font-family:arial;"&gt;Client Code:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let us assume that a servlet accesses the Spring-enabled EJB as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;public class InsertServlet extends HttpServlet &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;  @EJB&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;  private EmployeeFacade ef;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    String name = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    Double sal = new Double(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    name = request.getParameter("empName");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    sal = Double.valueOf(request.getParameter("Sal"));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;            Employee emp = ef.addEmployee(name,sal);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;            System.out.println("Successfully persisted an employee");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;            request.setAttribute("emp",emp);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;      this.getServletContext().getRequestDispatcher("/jsp/success.jsp").forward(request, response);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    catch(Exception e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;    …&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-family:courier new;" &gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If you look at the above code you will see that the Servlet uses dependency injection using &lt;span style="font-family:courier new;"&gt;@EJB&lt;/span&gt; (Java EE) to get an instance of Spring-enabled EJB and then invoke  its method.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Conclusion&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;After you package your application, you should be able to deploy and run the application that uses a Spring-enabled EJB 3.0 session bean. Note that I tested this with Oracle Application Server 10g  and I expect it to work in other application servers that support EJB 3.0. In a follow-up blog, I will discuss how you can use Spring’s JpaTemplate with a container-managed EntityManager within a Java EE container.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-115562693664172915?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/115562693664172915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=115562693664172915' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115562693664172915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115562693664172915'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/08/developing-spring-enabled-session-bean.html' title='Developing a Spring-enabled Session bean'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17645654.post-115527640112614813</id><published>2006-08-10T22:45:00.000-07:00</published><updated>2006-08-10T23:06:41.140-07:00</updated><title type='text'>Same house and same job but a new blog!</title><content type='html'>Changes are part of our life!  New car, new computer or new kids are always fun! They bring excitement to life. But sometime we have emotional attachment to old things, old houses, etc. And I had the same with my old blog-site (http://radio.weblogs.com/0135826/) and was resisting for a change. I used Radio UserLand for more than two and half years and although I never liked it user interface, ability to restore old blogs I was still emotionally attached that being my first blog site.&lt;br /&gt;&lt;br /&gt;Finally I decided to desert it. Some shortcomings in Radio Userland literally drove me crazy and I was not able to blog almost for a month after my laptop crashed! I had to pay &lt;b&gt;&lt;a class="weblogItemTitle" href="http://radio.weblogs.com/0135826/2006/08/08.html#a207"&gt;Price for  Carelessness. &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;My old blog site was getting fairly good number of hits averaging around 300 hits a day with some days around 2000-2500 hits. It has a good number of popular and controversial blogs that were linked from many web sites including TheServerSide.com, JavaWorld, java.net, etc and hence leaving the old blog home was not an easy decision. I will try to restore some of my popular old blogs in the new blog site so that these are not lost when my license expires with Radio UserLand and they trash these pages. So stay tuned when I return to normal bogging schedule!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17645654-115527640112614813?l=debupanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debupanda.blogspot.com/feeds/115527640112614813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17645654&amp;postID=115527640112614813' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115527640112614813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17645654/posts/default/115527640112614813'/><link rel='alternate' type='text/html' href='http://debupanda.blogspot.com/2006/08/same-house-and-same-job-but-new-blog.html' title='Same house and same job but a new blog!'/><author><name>Debu Panda</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://www.manning.com/panda/panda_cover150.jpg'/></author><thr:total>1</thr:total></entry></feed>
