Thanks Jeff, I've extended from JDBCTransaction and JDBCTransactionConfig and it worked perfectly!
2008/4/12, Jeff Butler <[EMAIL PROTECTED]>: > > I have that *not quite* right - you need to also override the > TransactionConfig and specify *that* class in the SqlMapConfig.xml file. > > Jeff Butler > > > > On Sat, Apr 12, 2008 at 7:12 AM, Jeff Butler <[EMAIL PROTECTED]> > wrote: > > > I think your last option is not that bad - it centralizes the > > initialization of the Connection. > > > > Another option with iBATIS is to implement your own transaction > > manager. Write a class that subclasses the current transaction manager you > > are using and override the getConnection() method. Look in the package > > com.ibatis.sqlmap.engine.transaction and subpackages to see the code for the > > iBATIS supplied transaction managers. In the overridden method, initialize > > the connection before returning it. > > > > In your sqlMapConfig.xml file, you can specify your new transaction > > manager: > > > > <transactionManager type="com.mycompany.MyTransactionManager"> > > ... > > </transactionManager> > > > > For example, > > > > public class MyTransactionManager extends JdbcTransaction { > > > > @Override > > public Connection getConnection() throws SQLException, > > TransactionException { > > Connection conn = super.getConnection(); > > Statement stmt = conn.createStatement(); > > stmt.execute("set temporary ...."); > > return conn; > > } > > } > > > > Jeff Butler > > > > > > > > On Sat, Apr 12, 2008 at 6:20 AM, Alex Perez <[EMAIL PROTECTED]> wrote: > > > > > Hi All, > > > > > > I'm trying to adapt an existing application running with ibatis, to > > > work with sybase. > > > > > > To write the sqlpmaps, I've just rewrited the SQL server 2000 ones, > > > and just worked ok. The tests were done with Sybase ASA 9.x (the > > > "enterprie > > > version"). > > > > > > The problem begins when trying to get it working with Sybase OEM, that > > > it's the same databae enginte, but ready to embed into applications. My > > > company has a OEM contract to use this engine as an embedded database in > > > our > > > products. But (and here starts the nightmare), due to some license > > > restrictions it's mandatory send a sentence each time you start a > > > connection > > > database like: > > > > > > SET TEMPORARY OPTION connection_authentication="XXXXXXXXXXXXX" [really > > > a very large string] > > > > > > Otherwise you'll only be able to send select statements to the > > > database, and get disconnected after 10 seconds aprox. > > > > > > The first attempt was, in my sybase-database.properties, put a jdbc > > > url: > > > > > > jdbc:sybase:localhost:port?ServiceName=database_name?sqlinitstring="set > > > temporary ........" > > > > > > But I get an exception due to the driver. It seems like the jdbc url > > > cannot be longer than 253 chars, and the auth_string is about 500 chars > > > long. > > > > > > Also I 've tried to send this "set option" trought an ibatis "update" > > > statements, like an stored procedure, but unsuccessfully. > > > > > > The last test to get it working, was: > > > In this code: > > > http://www.mirthproject.org/fisheye/browse/Mirth/tags/1.7.0/server/src/com/webreach/mirth/server/util/SqlConfig.java?r=2754 > > > > > > after the .buildSqlMapClient() call, doing a (in pseudo-code) > > > > > > conn = sqlMap.getDatasource().getConnection(); > > > Statement stmt = conn.createStatement(); > > > stmt.execute("set temporary ...."); > > > stmt.commit(); > > > > > > To try to bypass Ibatis layer [yes, it's horrible] > > > > > > Could anyone help me to figure out how can I send the "set temporary > > > option ..." for every connection created to the database ? > > > > > > thanks in advance. > > > > > > > > > -- > > > 3rd Law of Computing: > > > Anything that can go wrSegmentation fault -- core dumped. > > > > > > > -- 3rd Law of Computing: Anything that can go wrSegmentation fault -- core dumped.