XA is a set of distributed transaction protocols defined by Open Group.
XA provide interfaces that could be used for cross platform transactions. Currently, much of the famous databases provided XA-compliant drivers. XA-compliant driver means that the transaction manager could send XA command directly to the driver.
Oops, sorry, in the world of distributed transaction, there are transaction manager and resource managers. Transaction manager coordinate the transaction, orchestrating the two-phase commit for each of the resource manager.
In JEE point of view, and transaction manager could be a type 3 JDBC driver, and the resource managers could be an XA compliant JDBC drivers, or general type 4 JDBC driver in which the type 3 JDBC driver will emulate XA command using common JDBC transaction commands.
In WebLogic console, when we setup a connection pool, usually we will be asked whether we want to assign an XA driver or just ordinary driver. XA drivers will have a significant overhead imposed into it, so make sure you only use the XA drivers when really required. It is common to have an XA-compliant version of connection pool and non-XA-compliant connection pool, both connecting to the same database, to avoid performance penalty when we don't need two-phase commit.
In my former company, we have a clustered WebLogic server installation with each of the databases have two pairs of connection pools, a non-XA and XA-compliant driver. Due to clustered environment, database connection are using RMI through JNDI lookup. For read only data, always use non-XA connection pool to increase performance.
Some of my notes other than Java and Python. Mostly about other stuffs I play with such as Linux, Ubuntu, CentOS, Solaris, VirtualBox, VMWare Player, ... or whatever stuffs passing by...
Showing posts with label weblogic. Show all posts
Showing posts with label weblogic. Show all posts
Wednesday, July 25, 2007
What is an XA driver?
Labels:
database,
java,
jdbc,
jee,
jndi,
open group,
two-phase commit,
weblogic,
xa
Tuesday, July 24, 2007
Free and Unemployed
After admitted for work in Singapore, I resigned immediately because the employer asked me to start working ASAP. Singapore is a nice country to earn money, but I have a personal matters that pretty much the main reason to relocate there. The employer has been taken care of the EP application for me.
Yesterday I was called, suddenly the asked me to provide the translated academic transcript for the EP application. They said that this is not usually the case. Probably some kind of random sampling happened and it happened to be me that was chosen for the random checking. They already have some foreigners in the company, the procedure is a bit unusual.
I called to my campus. They told me that probably there is a delay in providing the translation of my academic transcript, due to the change of the rector of the University of Indonesia. Again, I lost my booked flight for the second time. What a waste of money.
Meanwhile, I'm free and unemployed now. Free zone..
Only for a while though...
This event also provides me with enough free time to explore, and accomplish things otherwise I couldn't do. Now I could read some old WebLogic texts, learn more the difference between type 3 and type 4 JDBC driver, and those kind of thingy... This time is a kind of retreat time, where you could do things you wouldn't have time to when you are engaged in an employment. I missed those time when I was as free as bird, when you become the business owner. But become an employee isn't a bad thing at all. You don't have to take just about everything, instead you could focus on things that you are best at.
Yesterday I was called, suddenly the asked me to provide the translated academic transcript for the EP application. They said that this is not usually the case. Probably some kind of random sampling happened and it happened to be me that was chosen for the random checking. They already have some foreigners in the company, the procedure is a bit unusual.
I called to my campus. They told me that probably there is a delay in providing the translation of my academic transcript, due to the change of the rector of the University of Indonesia. Again, I lost my booked flight for the second time. What a waste of money.
Meanwhile, I'm free and unemployed now. Free zone..
Only for a while though...
This event also provides me with enough free time to explore, and accomplish things otherwise I couldn't do. Now I could read some old WebLogic texts, learn more the difference between type 3 and type 4 JDBC driver, and those kind of thingy... This time is a kind of retreat time, where you could do things you wouldn't have time to when you are engaged in an employment. I missed those time when I was as free as bird, when you become the business owner. But become an employee isn't a bad thing at all. You don't have to take just about everything, instead you could focus on things that you are best at.
Labels:
employment,
indonesia,
jdbc,
singapore,
weblogic
Saturday, July 21, 2007
My Last Day,John Stovall, Python, WLST and Jython technology...
Yesterday supposed to be my last day @work. But somehow I must come again on Monday, and reschedule my flight to Batam to Tuesday. Moving to different kind of industry, but still in the same JEE/WebLogic/Solaris/Oracle path. Just a bit apart from the telco industry.
Lately I wasn't able to update this blog because at client office, they block the blog sites. Now, after being freed now I can start updating this blog again.
After accidentally meeting with John Stovall while at Changi Airport, I got enticed to learn more and more about Python, and Jython, its Java porting. First time I met John when I came to JaMU, December 2006. I was presenting Maven 2 technology, and each of the attendees were asked to introduce themselves. You can't miss noticing that big John. We happened to be in the same airplane, and after arrived at Changi airport, I began to recover his name, I called him, "Mr. Stovall", and then he began noticing an acquaintance. He's on the way to Amsterdam, to attend a Python meeting. He began preaching the beauty of Python, the philosophy behind it: "there should be one best way to do it...". I was also realizing that the reason why Guido von Rossum moved to Google was because of almost the entire Google site is based on Python.
I told John that I was using some Jython script because it is part of the WebLogic Scripting Tool (WLST). I learned a lot on it because some of my tasks while at Ericsson's project at Cyberjaya, was to create a automatic installation, deployment and setting tools. I found out that the best way to do it is through WLST. The older method wlshell still works, but using WLST, you could have access to a broader range of futures, both offline and online (requires a running WebLogic instance).
After returning to my regular tasks at Jakarta, I began downloading latest version of Jython. Before that, I have tried one of the scripting languages that has catch up the wave and has been ported to Java: JRuby. I also tried the scripting language made specially for Java: Groovy.
I began to fall in love working with Jython. You can utilize Java classes. The scripting language is close to the functional language I've been using a lot: Gofer+, a derivation of Haskell. Prof. Wishnu Prasetya taught us Data Structure and Algorithms using that functional language. Prof Mia Indika also taught the functional programming using the Haskell language. Python, er, Jython scripting more or less resemble that of Haskell. Sorry, for most of you who learned functional programming through typing lots of Irritating Parentheses (LISP). Though I also used Scheme when learning functional programming, later I mostly used the Gofer+/Haskell family of language.
Python also supports closure, so there is no point that Ruby is better. It only has Rails that makes it famous. I know when I learn Jython in depth, this is two fold, I could create better WLST scripts for WebLogic automatic deployments and configurations, and also be able to do OOP scripting for fast prototyping. I try to construct a script to test Hibernate DAOs and Managers. I will share some of these scripts when have more time to write it.
Lately I wasn't able to update this blog because at client office, they block the blog sites. Now, after being freed now I can start updating this blog again.
After accidentally meeting with John Stovall while at Changi Airport, I got enticed to learn more and more about Python, and Jython, its Java porting. First time I met John when I came to JaMU, December 2006. I was presenting Maven 2 technology, and each of the attendees were asked to introduce themselves. You can't miss noticing that big John. We happened to be in the same airplane, and after arrived at Changi airport, I began to recover his name, I called him, "Mr. Stovall", and then he began noticing an acquaintance. He's on the way to Amsterdam, to attend a Python meeting. He began preaching the beauty of Python, the philosophy behind it: "there should be one best way to do it...". I was also realizing that the reason why Guido von Rossum moved to Google was because of almost the entire Google site is based on Python.
I told John that I was using some Jython script because it is part of the WebLogic Scripting Tool (WLST). I learned a lot on it because some of my tasks while at Ericsson's project at Cyberjaya, was to create a automatic installation, deployment and setting tools. I found out that the best way to do it is through WLST. The older method wlshell still works, but using WLST, you could have access to a broader range of futures, both offline and online (requires a running WebLogic instance).
After returning to my regular tasks at Jakarta, I began downloading latest version of Jython. Before that, I have tried one of the scripting languages that has catch up the wave and has been ported to Java: JRuby. I also tried the scripting language made specially for Java: Groovy.
I began to fall in love working with Jython. You can utilize Java classes. The scripting language is close to the functional language I've been using a lot: Gofer+, a derivation of Haskell. Prof. Wishnu Prasetya taught us Data Structure and Algorithms using that functional language. Prof Mia Indika also taught the functional programming using the Haskell language. Python, er, Jython scripting more or less resemble that of Haskell. Sorry, for most of you who learned functional programming through typing lots of Irritating Parentheses (LISP). Though I also used Scheme when learning functional programming, later I mostly used the Gofer+/Haskell family of language.
Python also supports closure, so there is no point that Ruby is better. It only has Rails that makes it famous. I know when I learn Jython in depth, this is two fold, I could create better WLST scripts for WebLogic automatic deployments and configurations, and also be able to do OOP scripting for fast prototyping. I try to construct a script to test Hibernate DAOs and Managers. I will share some of these scripts when have more time to write it.
Thursday, May 17, 2007
Nevada and then XmlBeans
This early morning, I managed to boot my MiNevada Solaris. It says something that recommends you to boot using Solaris failsafe, because it seems that it wasn't restarted gracefully.
Actually there's some terms I need to find out, because Solaris has different terms for disk stuffs some of them are cylinder groups/CG and slices.
Currently it is a high time for our (our and our clients') project, because we are somewhere half way to the completion of the SIT (System Integration Test). There are some problems that dragged our schedule, especially the slow and unstable network connection. Some of the SMSC (Short Messaging System Center) was also reported to fail on bindings/connection. The problems seemed to be irreproducible easily, because there were no changes on the binaries we deployed. It has been working before, now it doesn't work.
Last week I offered myself to present this topic: Apache Xmlbeans for the next Java Meeting Up (JaMU) on June 2007. I will not be able to attend this month's JaMU as I will be here in Cyberjaya until beginning of next month. I was lucky to experience it since I was assigned for the Galaxy customer care application until my latest project. Both WebLogic Platforms (8.1 and 9.2) heavily use the Apache Xmlbeans framework. I think the hardest think to learn at first is the XSD file. For me the XSD structure is obscure. I am not getting used to XML parsing other than using the Apache Commons Digester library. That's the way Struts digest the struts-config.xml file, and I think that was more than enough.
But since I am exposed to a project that heavily uses web services, I need a more sophisticated framework to map XML to Bean and vice versa. That was the time when I found this XML Bean mapping framework. The nice thing about it is that it offers the full functionality of XML while it is easily usable using ordinary Java Bean accessor methods.
Actually there's some terms I need to find out, because Solaris has different terms for disk stuffs some of them are cylinder groups/CG and slices.
Currently it is a high time for our (our and our clients') project, because we are somewhere half way to the completion of the SIT (System Integration Test). There are some problems that dragged our schedule, especially the slow and unstable network connection. Some of the SMSC (Short Messaging System Center) was also reported to fail on bindings/connection. The problems seemed to be irreproducible easily, because there were no changes on the binaries we deployed. It has been working before, now it doesn't work.
Last week I offered myself to present this topic: Apache Xmlbeans for the next Java Meeting Up (JaMU) on June 2007. I will not be able to attend this month's JaMU as I will be here in Cyberjaya until beginning of next month. I was lucky to experience it since I was assigned for the Galaxy customer care application until my latest project. Both WebLogic Platforms (8.1 and 9.2) heavily use the Apache Xmlbeans framework. I think the hardest think to learn at first is the XSD file. For me the XSD structure is obscure. I am not getting used to XML parsing other than using the Apache Commons Digester library. That's the way Struts digest the struts-config.xml file, and I think that was more than enough.
But since I am exposed to a project that heavily uses web services, I need a more sophisticated framework to map XML to Bean and vice versa. That was the time when I found this XML Bean mapping framework. The nice thing about it is that it offers the full functionality of XML while it is easily usable using ordinary Java Bean accessor methods.
Tuesday, March 27, 2007
Ill Behaviored HTTP/1.1 Client
Today I've been message by my campus friend, asking an advice for tuning a SJAS. How many threads should he have for servlets, how many MDBs, and how many database connection in the pool.
He set the number for 1024, 128. Hmm. Very big. I asked him, how much memory and processor resources and app server instances do you have. The answer was shocking:
1 processor, 1 gigabyte, 1 instance
As far as I can remember, on a WebLogic they recommend to use less than that number of threads for best practices on each instances. Wow, and we were talking about WebLogic 8.1 instance in a UltraSPARC-IIIi Solaris 9 boxes with 8 gigs of memory!
I thought there must be something else happening. For just 1 processor, processing many threads is actually a waste of time in the context switching. I think it should not be like that. There something wrong when the system. It is already out of resource and the queue piles up. It must be some kind of resource starvation. Some resource may not be released during the process. Some resources are held for longer than it should be.
Then I remembered that I have had encountered some problems here.
The HTTP/1.1 Protocol has been there for such a long time. But there are some behavior most programmers still don't know.
The HTTP/1.1 differs from HTTP/1.0 that it implements persistent connection by default. The HTTP/1.1 will not be closing its connection after your client application exits. Your browser or client application by default will maintain HTTP connection until time out period elapsed. Before time out period, the connection is still up, and whenever you need to make more requests your browser or your HTTP client application will reuse the HTTP connection when possible, thus eliminating the overhead needed to setup such connections. The browser application makers have been doing their job very well it is transparent for us to such happenings in the protocol.
Remember I said 'by default', because you can explicitly asks the server (by adding a header field) to close the connection once the request has been fulfilled.
This is the thing that you need in your HTTP header.
Connection-Close: close
He set the number for 1024, 128. Hmm. Very big. I asked him, how much memory and processor resources and app server instances do you have. The answer was shocking:
1 processor, 1 gigabyte, 1 instance
As far as I can remember, on a WebLogic they recommend to use less than that number of threads for best practices on each instances. Wow, and we were talking about WebLogic 8.1 instance in a UltraSPARC-IIIi Solaris 9 boxes with 8 gigs of memory!
I thought there must be something else happening. For just 1 processor, processing many threads is actually a waste of time in the context switching. I think it should not be like that. There something wrong when the system. It is already out of resource and the queue piles up. It must be some kind of resource starvation. Some resource may not be released during the process. Some resources are held for longer than it should be.
Then I remembered that I have had encountered some problems here.
The HTTP/1.1 Protocol has been there for such a long time. But there are some behavior most programmers still don't know.
The HTTP/1.1 differs from HTTP/1.0 that it implements persistent connection by default. The HTTP/1.1 will not be closing its connection after your client application exits. Your browser or client application by default will maintain HTTP connection until time out period elapsed. Before time out period, the connection is still up, and whenever you need to make more requests your browser or your HTTP client application will reuse the HTTP connection when possible, thus eliminating the overhead needed to setup such connections. The browser application makers have been doing their job very well it is transparent for us to such happenings in the protocol.
Remember I said 'by default', because you can explicitly asks the server (by adding a header field) to close the connection once the request has been fulfilled.
This is the thing that you need in your HTTP header.
Connection-Close: close
Subscribe to:
Posts (Atom)