Sivakumar Thyagarajan's Blog
Connectors 1.6 Early Draft Specification now available!
I am very happy to announce that the Early Draft of the JavaTM
EE Connector Architecture 1.6 specification is available now.
We started to work on an update to the earlier Connectors specification
(J2EE
Connector Architecture 1.5) in the Expert Group of JSR 322
in January this year. The Expert Group has been working very hard on
the Early Draft and we are looking forward to hear your feedback.
Please send your feedback and comments to jsr-322-comments@jcp.org.
The purpose of the Java EE Connector Architecture 1.6 specification is
to address some areas in the earlier specification, where further
support has been requested by the developer/user community and the
expert group. Some of the important features that are being planned to
be addressed in this release include:
- Generic Inflow Context: a mechanism for enabling a resource adapter to provide additional contextual information while a Work gets executed by the application server's WorkManager
- Security Inflow: enabling a resource adapter to propagate security identity information during Work execution and delivery to MessageEndpoints(MDBs)
- General improvements to the specification: in the areas of handling connection failures, inbound and outbound configuration consistency, better configuration property processing (ability to specify better validation rules etc) and clarifications around the classloading of standalone resource adapters.
- Focus on
ease-of-development of resource adapters. Aligning with
common programming
model of Java EE by defining helper classes and
annotations for the Connector API wherever applicable.
). Here is a brief overview of the features that have been discussed and made it to the early draft. This is not a comprehensive list and so please see the Change History (Section I.1) for more information on all the changes made to the specification, in this early draft.
- Generic Inflow Context: Certain Enterprise Information System (EIS) integration usecases requires the propagation of contextual information from the EIS to the application server. For example, a resource adapter may want to flow-in Security context information, (or in the case of an EIS that deals with conversational messaging, correlation information that might be necessary to recreate a conversational session state in the container) from the EIS to the application server during inbound message delivery. The resource adapter may also want to run a particular Work instance in the context of the "flown-in" Security information.
- Security Inflow Context: It is critical, in EIS integration scenarios, that all interactions between an application server and resource adapter are secure.To achieve end-to-end application security, it is important that all activities that a Work instance performs, including delivering messages to a MessageEndpoint (MDB) happens in the context of an established identity.
- Other changes: In addition to the two new changes discussed above, a suite of new features/changes have also been discussed in the early draft. A few of them are:
- a definition of minimum set of requirments that must besupported by a compliant Java EE Connectors Architecture 1.6 container within an implementation of any subset of the Java EE Full Profile (like a Web Profile). Refer Section 3.5
- an ability to specify the transaction support level of a resource adapter at runtime. Refer Section 7.13
- ClassLoading requirements for standalone resources adapters. Refer Section 19.3
Posted at 08:49PM Aug 07, 2008 by Sivakumar Thyagarajan in Sun | Comments[3]
Java EE Connector 1.6 overview - JavaOne BoF presentation slides
Binod and I, along with the expert group of JSR 322, have been working on an update to the Java EE Connectors technology. This update, Java EE Connector Architecture 1.6 is planned to be part of Java EE 6.
We presented an overview of the updates currently being discussed in a BoF session in this year's JavaOne. Thanks to everyone who attended the session and for the interesting discussion during and after the session.
I received a few requests for the slides that we used in BoF 5634, and so I have made them available here (pdf). We are working on producing an early draft of the specification and it should be posted in the JSR home page in a few weeks. So, please stay tuned and let us know your feedback.
Posted at 11:26PM Jun 30, 2008 by Sivakumar Thyagarajan in Sun |
GlassFish presentation at Open Source India Week in Bangalore

A technical
developer track was organized in Bangalore as part of Open Source India
Week (erstwhile
LinuxAsia )
earlier this week and I presented a technical session on GlassFish.
Some members in the audience wanted
access to the slides and I have made them available here.
It was an interactive presentation followed by a Q&A session. I have tried to record the questions, posed by the members in the audience, below.
- Commercial support offerings for GlassFish.
- In-memory JSP compilation and how to keepgenerated the resulting files
- While developing in an open-source environment, how does GlassFish manage requirements and feature requests from the community and yet maintain a determinate roadmap for the future? I don't think we (along with Sahoo) could provide a convincing answer to this question.
- Discussion around various source code branching schemes in an open source product and why GlassFish chose its current approach.
- Tooling
(IDE support) options for
Metro and building interoperable web-services
Posted at 08:22PM Feb 14, 2008 by Sivakumar Thyagarajan in Sun | Comments[4]
Will code for ... freedom!
You might have seen the announcement yesterday in the media or read it via Sun blog posts.
As the contest website says: "... Sun Microsystems is happy to announce the Code For Freedom contest where students across India contribute to the technologies that are empowering the participation age. Participating in this contest will provide you with precious industry experience while still learning in college. And there is more. We in turn reward you for your valuable contribution in taking the first steps towards the open source movement."
Sun's history indicates how a university could help in fostering innovation. One of our founder's engineering skills while at university is well known too.
So if you are a student in India this is a wonderful opportunity to learn , participate and win.
GlassFish is a participating project as well and instructions on how to contribute are available here.
Posted at 11:37AM Aug 16, 2007 by Sivakumar Thyagarajan in Sun | Comments[1]
GlassFish at foss.in 2006
|
Moinak and Joe has already written about the upcoming foss.in 2006 at IISc, Bangalore and how Sun is participating in the event this year as well. foss.in, like last year, promises to be an interesting meeting place for FOSS contributors in and around Bangalore and from across the world. The GlassFish engineering team would have a presence this year too at the event, with Prasad's talk on Project GlassFish as well as having a neat GlassFish/NetBeans demo at the Sun booth area. A lot of really interesting activities has happened around GlassFish in the last few months. So, if you are interested in GlassFish and would be attending foss.in 2006, please drop by the booth area and talk to us!! |
Update 2: The GlassFish Talk, as per the foss.in latest event schedule, is on Saturday 2pm afternoon [25th Nov] in Hall A/120
Posted at 12:11AM Nov 22, 2006 by Sivakumar Thyagarajan in Sun | Comments[1]
OpenJDK !!!!
Jag, Tim Bray, Mark Reinhold, Danny Coward, Eduardo at the Aquarium about GlassFish, Peter von der ahe, Joshua Marinacci has already written about it. This is a tremendous achievement and I for one, am very happy that duke is out too :)!!
Posted at 06:51PM Nov 13, 2006 by Sivakumar Thyagarajan in Sun |
Generic RA for JMS project updates
... for those who haven't noticed, some changes to the HEAD now have message redelivery feature we had hinted earlier and we also have a new document that shows how to integrate Sonic MQ with GlassFish/Sun Java System Application Server, thanks to my colleague Ramesh Parthasarathy.
Posted at 07:51PM Jul 28, 2006 by Sivakumar Thyagarajan in Sun |
ClassLoaders in GlassFish - a FAQ
|
We have had occasional queries in the forums and mailing lists about the GlassFish classloader hierarchy and/or how to limit visibility of custom library classes to certain components in GlassFish/Sun Java System Application Server. So here is an FAQ we came up with .. Let me know if this is useful and esp if you have a question that is not answered here.
|
Beware of bugs in the above code; I have only proved it correct, not tried it
- Donald Knuth
Note: Sun Java System Application Server and GlassFish is referred to
as "application server" through-out this post. Except for some sections
where it is explicitly indicated as valid only for Standard Edition/Enterprise Edition,
the rest of the FAQ is valid for GlassFish v1/Sun Java System Application Server
Platform Edition 9.0
Where do I learn about ClassLoaders in general?
There are a lot of documents available off the web that could help you
understand about ClassLoaders.
ClassLoader JavaDoc
Understanding Network Class Loaders
Loading, Linking and Initialization of the The Java Virtual Machine Specification
Blogs by Sundar on ClassLoading: Part 1, Part 2
The definitive paper: Dynamic Class Loading in the Java Virtual Machine (1998) - well explained and yet readable!
Where could I learn more about working with ClassLoaders of GlassFish/Sun Java
System Application Server?
The ClassLoaders chapter in the application server developer's guide is a
good place to begin.
How do I use a different xml parser with my application?
The application server by default uses the XML parser that comes with
the JDK (Tiger). You could also use a different JAXP compatible
implementation for an application. An application can be configured to
use a different JAXP implementation than the one bundled with the JDK,
by using the --libraries attribute while deploying the application.
This works due to JAXP's use of the Jar Service Provider discovery
mechanism specified in the Jar File Specification to determine the
concrete class to instantiate. More on how this works in a future blog entry :)
How do I control visibility scope of my libraries? [ie how do I control my libraries/
library classes to be available
o only to an application
o only to a cluster/config
o for the whole domain
The --libraries deploy time attribute for an application [as explained
in the "Application specific Class Loading" section of the classloader
chapter] can be used to specify runtime dependencies of an
application. There are two ways to refer to a library in the
--libraries list. When a relative path is specified [ie only the jar
name], the application server attempts to find the specified library
in domain-dir/lib/applibs.
For a library to be made available to the whole domain, you could
place the jar in domain-dir/lib or domain-dir/lib/classes, as
explained in the "Using the Common ClassLoader" section of the
classloader chapter. This is usally the case for JDBC drivers and
other utility libraries that are shared by all applicatins in the
domain.
For cluster wide use, copy the jars into the domains/domain1/config/xyz-config/lib directory.
Then add the jars in classpath-suffix or classpath-prefix element of xyz-config.
This will synchronize the jars for all server instances using xyz-config.
To summarize,
* domains/domain1/lib - domain wide scope, common classloader add the jars automatically
* domains/domain1/config/cluster1-config/lib - config wide, update classpath-prefix or classpath-suffix
* domains/domain1/lib/applibs - application scope, added to application class loader automatically
* domains/domain1/config/cluster1-config/lib/ext - adds to java.ext.dirs automatically
What is the preferred way to use a library jar with an
application (bundle with application vs. instance/lib/applibs,
instance/lib, install/lib, classpath-prefix, classpath-suffix,
instance/lib/ext, instance/lib/classes)?
Application Scoping
Use --libraries [domain-dir/lib/applibs] for the following usecases
+ The dependency needs to be resolved at deploy time
+ The dependency is specific to one or more applications alone in the
domain
+ Sharing a dependency for reducing memory footprint/sharing static
state etc.
Please remember that this is non-portable and it's usage is
GlassFish/Sun application server specific
Bundling with the application is useful when the dependent library
needs to be scoped to the application and no sharing is required.
Global Sharing
Place libraries in domain-dir/lib and domain-dir/lib/classes to add
libraries to the common classloader. This is commonly used for
libraries like JDBC drivers that used by multiple applications.
Requires an AS restart.
Code Patches and bundled library overrides
Use classpath-prefix when you want your libraries to be placed ahead of
application server implementation classes in the shared chain. Again
this is ideally used for placing application server
development/diagnostic patches.
Use classpath-suffix when you want libraries to be placed after of
application server implementation classes in the shared chain.
Optional Packages
domain-dir/lib/ext is a java.ext.dirs directory and is the location
for installing optional packages.
How do I use different JDBC drivers? Where should I copy the jar(s)?
It is recommended to place JDBC drivers, that are used by all the
applications in the domain, in domain-dir/lib or
domain-dir/lib/classes. A restart of the application server instance
is required today so that the JDBC drivers are visible to applications
deployed in the domain.
How do I call an EJB in a stand alone module from another stand
alone web app?
Please refer to the section titled "Packaging the Client JAR for One
Application in Another Application" in the classloaders glassfish
documentation.
When do I need to restart the application server to use a library jar?
Adding new jars to the following directories require an application
server restart
- domain-dir/lib and domain-dir/lib/classes
- classpath-prefix, classpath-suffix elements in domain.xml
- domain-dir/lib/ext
I see an access control error message when I am trying to use my
library? Help! OR When do I need to grant permission to the library in the
server.policy file?
This usually indicates that the default permissions granted to
applications are not sufficient, and additional permissions are
required for an application. For additional information on
server.policy and granting permission to applications, please refer to
the "Changing Permissions for an Application" section under "Securing
Applications" in the AS developer guide.
How do I have my application use libraries bundled with it against an equivalent library bundled in the application server [or] How do I have delegation inversion for specific libraries
This can be done for web applications alone. You can make the Web Classloader follow the delegation inversion model in the Servlet specification by setting delegate="false" in the class-loader element of the sun-web.xml file. It's safe to do this only for a web module that does not interact with any other modules. The default value for the delegate flag is true. Look at "ClassLoader Delegation" in the "Developing Web Applications" chapter for more information.
Technorati: GlassFish, ClassLoader, JavaEE
Posted at 11:15AM Jul 28, 2006 by Sivakumar Thyagarajan in Sun | Comments[3]
Gregor Samsa is a ... software bug?
|
Just came across this "Daily WTF" entry and loved it. If Kafka was alive now, would he ever metamorphosize Gregor Samsa into a software bug? :) Have you seen any similar interesting literary reference(s) in source code elsewhere?
|
Posted at 10:25PM Jul 24, 2006 by Sivakumar Thyagarajan in Personal |
JavaOne BoF 0491 - Developing J2EE™ Connector Architecture Resource Adapters
|
As mentioned in an earlier entry Frank Kieviet and I spoke at a BoF titled "Developing J2EE™ Connector Architecture Resource Adapters" in this year's JavaOne. Though the presentations for the technical sessions are available now on the JavaOne site, slides for the BoFs are not available. Frank has made the slides [pdf] for our BoF and an (amateur) audio recording of the presentation and Q/A session available. Please let us know any comments you may have. |
Technorati: GlassFish, JavaOne, JavaEE, J2EE
Posted at 09:41PM Jun 28, 2006 by Sivakumar Thyagarajan in Sun |
On Fermat, his last theorem and a musical??
|
|
I had liked an earlier book of Simon Singh and love numbers (well, who doesn't) and so grabbed the Fermat's Enigma from a local library a couple of weeks ago and happened to read it last week. After all who can resist a teaser that goes "I have discovered a truly marvelous demonstration of this proposition that this margin is too narrow to contain." Well, apparently a whole world of mathematicians have been on or helped this quest for 350 odd years, when an English mathematician of Princeton ("after working in isolation for eight years") finally cracked it, or did he? A truly rivetting account of a painstaking mathematical journey. Highly recommended for a wonderful Saturday/Sunday afternoon read. Apart from Simon Singh's clear lucid summary of some of the tricky mathematics surrounding the book (such that even a layperson, like me too ahem, can understand), what is commendable about the book, atleast IMO, was that it brings forward the interesting aspects of the lives of the mathematicians involved in the quest.
|
Now, what do I need to do to understand the proof ... sigh :)
Posted at 06:20PM Jun 28, 2006 by Sivakumar Thyagarajan in Personal |
java.net community corner minitalk at JavaOne 2006
|
One of the interesting booths in the JavaOne pavilion is the java.net community corner where projects built at java.net were showcased. Last year and this year, this pavilion also hosted a series of minitalks where java.net developers could give presentations on their projects. Last year I had given an introduction to Generic RA for JMS and this year, since we had seen enough interest in the project mailing lists, we gave a presentation on the Availability features in Generic RA for JMS. Binod also has a good writeup about how Generic RA enables JMS provider pluggability in GlassFish and other J2EE application servers.
|
The slides are available here and an audio recording [this year the minitalks were podcast live from the show floor] is available here ... and thanks again to the gentleman in the audience who helped me with his USB key!!
Technorati: GlassFish, JavaOne, JavaEE, J2EE
Posted at 12:59PM Jun 18, 2006 by Sivakumar Thyagarajan in Sun |
One year old .. Go OpenSolaris go!!
The OpenSolaris project is one year old today. Congratulations to everyone for making it happen.
Posted at 10:06PM Jun 14, 2006 by Sivakumar Thyagarajan in Sun |
JavaOne 2006 Day 0: NetBeans Day
Here are some raw notes from two sessions I attended in NetBeans Day
NetBeans Day
NB 5.5 and Java EE 5 - Ludo and Martin Adamek
Introduction
Java EE 5 available today - SDK, Tools bundle beta AS/ESB/AM
"This ain't your fathers J2EE" - Bill Shannon
Declarative programming, EoD - Removing requirements - More powerful frameworks
Java EE 5 end to end development - JPA, web tier, ejb 3.0, web services and java EE SDK support
web/j2ee applications integrated with the profiler pack
NetBeans 5.5 Java Persistence API support
wizarsd to create entity classes, persistence units, persistence provider libraries, entity classes from database, jsf pages from entity classes, session facade from entity classes
standalone persistence runtime from glassfish
visual editor for persistence.xml
NetBeans 5.5 WebServices - Wizards for WS, clients, handlers and operations
jax-ws 2.0 and jaxb 2.0
drag and drop for WS operations, using WS clients from another prohect and annotations code completion
glassfish tester capability
NetBeans 5.5 Web Tier suppport
jsp/jsf el code completion
visual security configuration
palette, hyperlinks
CRUD application generator
Demo
entity classes from database, jsf page from entity classes, AVK integration, annotation codecompletion, persistence.xml gui/xml editing, hyperlinked editor
webservice creation wizard, deploy, test WS
Project tango
deliver WS technologies enabling first class interop between SJS products and WCF
works with NB 5.5
wizards to define WS attributes - secure WS- keystore/security bindings etc
A secure WS being contacted by a webclient - xenc:CipherValue containing encrypted content - allows interoperability between WCF and SJS.
NB 5.5 beta available today.
NetBeans enteprise pack - Todd Fast,Chris Webster and Mike Frisino
NB enterprise pack
enriching the circle of integrate tools
changing the game - open source JSE into NB
UML capabilities - SOA/BPEL orch at NB
Vision
SOA - composite application building, BPEL, integration and rich visual XML tools
Application lifecycle management - UML modelling, project mgmt and governance and automatic project documentation
Enterprise pack
Integrated UML modelling - UML 2.0 - bidirectional model to code synchronization - markerless code generation
Visual WS orchestration - BPEL 2.0 designer - roundtrip engg between visual diagram and BPEL source - deployment to SeeBeyond BPEL 2.0 engine hosted in JBI
Visual XML tools - scalable visualization of schema documents - handle real world schemas like OTA, NRF, UBL, IRS - allows user to view schema with context - schema conceptualization - perform advanced queries with visualization. IRS schemas are really complex ! :)
NB Enterprise pack Early Access available now!
Demo
BPEL editor whirlwind tour - visual design environment, design and code views - one or more BPEL modules in a composite application - deploy BPEL artifacts to BPEL runtime is an implementation of BPEL which is embedded in a JBI engine(extensible service bus) [available within SJSAS] - new SOA samples available - Mapper XPath expression editor - Add JUnit testcases to exercise WSDL artifacts - debugging support at source code level (very similar to java debugger in NB) - adding WSDL's will result in obtaining transitive closure of all WSDLs into the project.
visual XML schema generator - source, schema, instance and analysis views - OTA schema as an example of viewing and searching large schemas - show usages -
http://enterprise.netbeans.org
http://xml.netbeans.org
.. and as usual the "Click and Hack - The Type-It Brothers." were am[us|az]ing. My wifi in my laptop is acting up and so my updates would be rather slow. Apologies for that. Anyway, for better/live coverage, there is a whole lot of sound-bytes appearing in the blogosphere.
My BoF is at Wednesday 05/17/2006 08:30 PM - 09:20 PM Argent Hotel Franciscan I. So if you are interested in connectors/resource adapter development, please do come.
Technorati: GlassFish, JavaOne, JavaEE, J2EE
Posted at 10:15PM May 17, 2006 by Sivakumar Thyagarajan in Sun |
JavaOne 2006 - see you there
JavaOne 2006 is around the corner and this is the third year in a row I am participating. The JavaOne experience has always been amazing. JavaOne is not just a list of Technical Sessions that span through the entire day and BoFs/parties that continue till late in the night but is also about meeting people, gaining new insights, seeing cool technology in action and sharing ideas. There are loads of tips from others out there. After all it is still the best place to meet people anything and everything to do with Java. This year note that the PDFs for the technical session presentations would be available for download from May 15.
For those who are interested on resource adapter development/J2EE Connectors specification development, I co-present BoF-0491 with Frank Kievet, on Wednesday 05/17/2006 08:30 PM - 09:20 PM, Argent Hotel Franciscan I.
In the Generic RA for JMS project, we are presenting a talk titled "Availability features in the Generic RA for JMS" at the java.net community corner. This talk would discuss availability related features, in the RA, like connection auto-reconnect, message redelivery, connection validation etc and would be at 12:30PM on Thursday May 18, 2006 at pd # 532 in the JavaOne Pavilion area.I should place the presentation slides and an abstract in the next couple of days in the talks folder. So if you are planning on attending JavaOne, please do come by and let's meet.
.. and in Project GlassFish there is a bunch of sessions/BoFs we are part of.
This space hasn't been updated for quite a while and so, to fix that, I might blog(either live or delayed) from technical sessions/BoFs I attend. Well that is a hard promise for the madness that is those three-four days, however let's see how it goes. See you there! .. and I have to go get ready for the long flight from Bangalore to San Francisco
Technorati: GlassFish, JavaOne, JavaEE, J2EE
Posted at 09:06AM May 12, 2006 by Sivakumar Thyagarajan in Sun |


