code

Tuesday, October 26, 2004

hash map iteration

code snippet for iterating over a hash:

HashMap map = new HashMap();
map.put("key1", "value1");
map.put("key2", "value2");
// the only method of iterating over a list
for (Iterator i = map.keySet().iterator(); i.hasNext();) {
String key2 = (String) i.next();
String value2 = (String) map.get(key2);
System.out.println(key2 + value2);

}

regex

Regular expressions are a new passion of mine. You have to use them until you can speak them. Matchmaking with regular expressions

Here is a nice statement to generate sql to do an update.

Here is a nice statement to generate sql to do an update.

SELECT 'UPDATE COOKIE_TABLE SET cookiecost = ''' || cost || ''' WHERE userid = ' || userid || ';'
FROM cookie_table WHERE category = 'sugar cookies'


Note the use of the triple single quotes to do this. Another way is to do a select into, but often companies want to have a script that is repeatable, and this generates such a script. You run it, and in toad save the results in a text file.

XA and NonXA datasource

XA and NonXA datasource

XA and NonXA datasource
Posted by: Mike Spille on September 11, 2003 in response to Message #95297 1 replies in this thread
An XA transaction, in the most general terms, is a "global transaction" that may span multiple resources. A non-XA transaction always involves just one resource.

An XA transaction involves a coordinating transaction manager, with one or more databases (or other resources, like JMS) all involved in a single global transaction. Non-XA transactions have no transaction coordinator, and a single resource is doing all its transaction work itself (this is sometimes called local transactions).

XA transactions come from the X/Open group specification on distributed, global transactions. JTA includes the X/Open XA spec, in modified form.

Most stuff in the world is non-XA - a Servlet or EJB or plain old JDBC in a Java application talking to a single database. XA gets involved when you want to work with multiple resources - 2 or more databases, a database and a JMS connection, all of those plus maybe a JCA resource - all in a single transaction. In this scenario, you'll have an app server like Websphere or Weblogic or JBoss acting as the Transaction Manager, and your various resources (Oracle, Sybase, IBM MQ JMS, SAP, whatever) acting as transaction resources. Your code can then update/delete/publish/whatever across the many resources. When you say "commit", the results are commited across all of the resources. When you say "rollback", _everything_ is rolled back across all resources.

The Transaction Manager coordinates all of this through a protocol called Two Phase Commit (2PC). This protocol also has to be supported by the individual resources.

In terms of datasources, an XA datasource is a data source that can participate in an XA global transaction. A non-XA datasource generally can't participate in a global transaction (sort of - some people implement what's called a "last participant" optimization that can let you do this for exactly one non-XA item).

For more details - see the JTA pages on java.sun.com. Look at the XAResource and Xid interfaces in JTA. See the X/Open XA Distributed Transaction specification. Do a google source on "Java JTA XA transaction".

-Mike

Thursday, October 14, 2004

quote

"Before the beginning of great brilliance, there must be chaos. Before a brilliant person begins something great, they must look foolish in the crowd." -- I Ching

Tuesday, October 12, 2004

A Cup of Joe

This is where I'll blog snippets of code that I learn, or need to repeat. I'll be adding lots.

First, basic number translations.



long yyy = 3849L;
String xxx = Long.toString(yyy);