Ibatis

78 views
Skip to first unread message

jug

unread,
Jan 7, 2009, 2:52:13 PM1/7/09
to jug.cl
Muchas felicidades, desde ya para este 2009, pero no todo es tan
feliz, estoy haciendo una prueba con ibatis, pero trato de conectarme
por pool y no puedo, es mas ni siquiera se bien como se hace, el pool
esta definido en glassfish y este funciona, el programa es capaz de
hacer una conexion directa pero no por pool, como debiera confirgurar
el archivo de configuracion de ibatis????


Atte. Marcelo.-

Mauricio Cáceres

unread,
Jan 7, 2009, 2:55:30 PM1/7/09
to ju...@googlegroups.com
he aqui un ejemplo


  <transactionManager commitRequired="true"  type="EXTERNAL">
    <property name="DefaultAutoCommit" value="false"/>
    <property name="SetAutoCommitAllowed" value="false"/>
    <dataSource type="JNDI">
      <property name="DataSource" value="java:comp/env/myDS"/>
    </dataSource>
  </transactionManager>



2009/1/7 jug <marcelo...@gmail.com>

Cesar Ogalde

unread,
Jan 7, 2009, 3:00:11 PM1/7/09
to ju...@googlegroups.com

Es posible que tengas problemas para inicializar el contexto adjunto ejemplo con los parámetros

<transactionmanager type="JDBC" commitRequired="true">
  <datasource type="JNDI">
  <property name="context.java.naming.factory.initial"
  value="org.jnp.interfaces.NamingContextFactory" />
  <property name="context.java.naming.provider.url"
  value="jnp://localhost:2199" />
  <property name="context.java.naming.factory.url.pkgs"
  value="org.jboss.naming:org.jnp.interfaces" />
  <property name="DataSource"
  value="java:comp/env/jdbc/MySQLDB" />
  <property name="JDBC.DefaultAutoCommit" value="false" />
  </datasource>
 </transactionmanager>

Importante : busca cuales son los valores para glassfish

--
Atte Cesar Ogalde Hernández
Líder Senior de Proyectos Capa Integración y Presentación.

Cesar Ogalde

unread,
Jan 7, 2009, 3:09:33 PM1/7/09
to ju...@googlegroups.com

adjunto los valores que encontré e intentas.

"java.naming.factory.initial"="com.sun.enterprise.naming.SerialInitContextFactory");
"java.naming.factory.url.pkgs"= "com.sun.enterprise.naming"
"java.naming.factory.state"= "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"

  // optional. Defaults to localhost. Only needed if web server is running 
  // on a different host than the appserver  
  "org.omg.CORBA.ORBInitialHost"="localhost"

  // optional. Defaults to 3700. Only needed if target orb port is not 3700.
  "org.omg.CORBA.ORBInitialPort"="3700"

url : https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html



Saludos

jug

unread,
Jan 8, 2009, 10:27:39 AM1/8/09
to jug.cl
Mren la verdad les agradezco pero sigue sin funcionar aqui esta mi
archivo "SQLMCONFIG.XML"


<transactionManager type="JDBC" commitRequired="true">
<dataSource type="JNDI">
<property name="context.java.naming.factory.initial"
value="com.sun.enterprise.naming.SerialInitContextFactory" />
<property name="context.java.naming.factory.url.pkgs"
value="com.sun.enterprise.naming" />
<property name="java.naming.factory.state"
value="com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"/>
<property name="DataSource"
value="java:comp/env/jdbc/as-ti" />
<property name="JDBC.DefaultAutoCommit"
value="false" />
<property name="org.omg.CORBA.ORBInitialHost"
value="localhost"/>
<property name="org.omg.CORBA.ORBInitialPort"
value="3700"/>
</dataSource>
</transactionManager>

PERO NO FUNCIONA SNIF....AYUDA....

Jose Miguel Selman

unread,
Jan 8, 2009, 10:30:23 AM1/8/09
to ju...@googlegroups.com
¿Tienes algún error específico? Por favor entréganos más información.
Slds,
--
Jose M. Selman
jose....@gmail.com

Sonic

unread,
Jan 8, 2009, 11:05:44 AM1/8/09
to ju...@googlegroups.com
siiiiiiiiii falta info

2009/1/8 Jose Miguel Selman <jose....@gmail.com>

jug

unread,
Jan 8, 2009, 11:54:11 AM1/8/09
to jug.cl
Este es el pequeño error que nvia....

java.lang.RuntimeException: Error occurred. Cause:
com.ibatis.common.xml.NodeletException: Error parsing XML. Cause:
java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/
transactionManager/dataSource/end()'. Cause:
com.ibatis.sqlmap.client.SqlMapException: There was an error
configuring JndiDataSourceTransactionPool. Cause:
javax.naming.NoInitialContextException: Cannot instantiate class:
com.sun.enterprise.naming.SerialInitContextFactory [Root exception is
java.lang.ClassNotFoundException:
com.sun.enterprise.naming.SerialInitContextFactory]
at
com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse
(SqlMapConfigParser.java:49)
at
com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient
(SqlMapClientBuilder.java:63)
at ibatissqlserver.Main.main(Main.java:44)
Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML.
Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/
transactionManager/dataSource/end()'. Cause:
com.ibatis.sqlmap.client.SqlMapException: There was an error
configuring JndiDataSourceTransactionPool. Cause:
javax.naming.NoInitialContextException: Cannot instantiate class:
com.sun.enterprise.naming.SerialInitContextFactory [Root exception is
java.lang.ClassNotFoundException:
com.sun.enterprise.naming.SerialInitContextFactory]
at com.ibatis.common.xml.NodeletParser.parse
(NodeletParser.java:53)
at
com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse
(SqlMapConfigParser.java:46)
... 2 more
Caused by: java.lang.RuntimeException: Error parsing XPath '/
sqlMapConfig/transactionManager/dataSource/end()'. Cause:
com.ibatis.sqlmap.client.SqlMapException: There was an error
configuring JndiDataSourceTransactionPool. Cause:
javax.naming.NoInitialContextException: Cannot instantiate class:
com.sun.enterprise.naming.SerialInitContextFactory [Root exception is
java.lang.ClassNotFoundException:
com.sun.enterprise.naming.SerialInitContextFactory]
at com.ibatis.common.xml.NodeletParser.processNodelet
(NodeletParser.java:123)
at com.ibatis.common.xml.NodeletParser.process
(NodeletParser.java:105)
at com.ibatis.common.xml.NodeletParser.process
(NodeletParser.java:102)
at com.ibatis.common.xml.NodeletParser.process
(NodeletParser.java:102)
at com.ibatis.common.xml.NodeletParser.parse
(NodeletParser.java:72)
at com.ibatis.common.xml.NodeletParser.parse
(NodeletParser.java:51)
... 3 more
Caused by: com.ibatis.sqlmap.client.SqlMapException: There was an
error configuring JndiDataSourceTransactionPool. Cause:
javax.naming.NoInitialContextException: Cannot instantiate class:
com.sun.enterprise.naming.SerialInitContextFactory [Root exception is
java.lang.ClassNotFoundException:
com.sun.enterprise.naming.SerialInitContextFactory]
at
com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory.initialize
(JndiDataSourceFactory.java:60)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser
$9.process(SqlMapConfigParser.java:220)
at com.ibatis.common.xml.NodeletParser.processNodelet
(NodeletParser.java:121)
... 8 more
Caused by: javax.naming.NoInitialContextException: Cannot instantiate
class: com.sun.enterprise.naming.SerialInitContextFactory [Root
exception is java.lang.ClassNotFoundException:
com.sun.enterprise.naming.SerialInitContextFactory]
at javax.naming.spi.NamingManager.getInitialContext
(NamingManager.java:657)
at javax.naming.InitialContext.getDefaultInitCtx
(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at
com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory.initialize
(JndiDataSourceFactory.java:44)
... 10 more
Caused by: java.lang.ClassNotFoundException:
com.sun.enterprise.naming.SerialInitContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:
276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:
319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at com.sun.naming.internal.VersionHelper12.loadClass
(VersionHelper12.java:46)
at javax.naming.spi.NamingManager.getInitialContext
(NamingManager.java:654)
... 14 more

Cesar A. Ogalde H.

unread,
Jan 8, 2009, 11:55:19 AM1/8/09
to ju...@googlegroups.com
Debes copiar el jar cliente de glassfish en tu proyecto.

Saludos
Enviado desde mi equipo BlackBerry® de Claro

-----Original Message-----
From: jug <marcelo...@gmail.com>

Date: Thu, 8 Jan 2009 08:54:11
To: jug.cl<ju...@googlegroups.com>
Subject: Re: Ibatis

jug

unread,
Jan 8, 2009, 12:01:52 PM1/8/09
to jug.cl
y cual es el jar cliente?????

jug

unread,
Jan 8, 2009, 12:02:56 PM1/8/09
to jug.cl

Cesar, de hecho coloque algunos jar como el j2ee, y otros que se
mencionan en el link que enviaste pero nada...

Cesar A. Ogalde H.

unread,
Jan 8, 2009, 12:06:32 PM1/8/09
to ju...@googlegroups.com
Envianos la informacion de la estructura de tu proyecto para ayudarte.


Saludos
Enviado desde mi equipo BlackBerry® de Claro

-----Original Message-----
From: jug <marcelo...@gmail.com>

Date: Thu, 8 Jan 2009 09:02:56
To: jug.cl<ju...@googlegroups.com>
Subject: Re: Ibatis




jug

unread,
Jan 8, 2009, 12:18:07 PM1/8/09
to jug.cl
Es un "proyecto" realizado en netbeans 6.5 que simplemente es una
clase main que lo unico que pretende es conectarse a una base de datos
sql-server 2005, ahora por conexion directa funciona, ¿porque no
dejarlo asi?, simple es solo por aprender, el pool esta realizado en
glassfish y funciona, probado en el proyecto hay una clase que realiza
solo una consulta.....eso

Ariel Alejandro Aguayo Bascu~an

unread,
Jan 10, 2009, 7:56:40 PM1/10/09
to ju...@googlegroups.com

Al parecer ya te respondieron, pero entre tanto mail me perdi (ademas me
llegaron desordenados :/ ). Yo veo 2 cosas... si quieres tener connection
pooling puedes hacerlo sin necesidad de JNDI. En vez de eso puedes usar
directamente commons dbcp ( http://commons.apache.org/dbcp/ ) o C3P0
(http://tom.tharrisx.homedns.org/javalib/c3p0-0.8.4.5/doc/)
definiendo el datasource correspondiente. Pero bueno, segun lei por ahi
estas interesado en aprender. Si tu datasource esta en un glassfish lo
que necesitas es acceder al servicio JNDI del contenedor. Te recomiendo
ver este link:

https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB

Es para llamar a EJB's desde aplicacion standalone, pero el punto de
partida para EJB's como para datasources es el mismo: JNDI, por lo tanto
puedes seguir esos pasos (si te fijas vas a tener que agregar un jar de
glassfish a tu proyecto). Otra cosa que puedes hacer es agregarle tu
propio servicio de JNDI a la aplicacion... para esto tienes alternativas
como simple-jndi ( http://www.osjava.org/simple-jndi/ ) o directory de
apache ( http://directory.apache.org/subprojects/naming/index.html )..
creo que con spring tb habia algo parecido a un JNDI "mula" supuestamente
para facilitar testing, pero de ese dato no recuerdo mucho.

----
Ariel Aguayo B. (arag...@dcc.uchile.cl)

"Vale la pena morir por todo aquello sin lo cual no vale la pena vivir..."
Salvador Allende.

jug

unread,
Jan 14, 2009, 11:32:20 AM1/14/09
to jug.cl
Gracias a cada una de las respuestas, especialmente a Cesar quien
demostro tener una voluntad enorme, Ariel si tuvieras ejemplos de
dbcp, seria espectacular....



On 10 ene, 21:56, Ariel Alejandro Aguayo Bascu~an
<aragu...@dcc.uchile.cl> wrote:
> Al parecer ya te respondieron, pero entre tanto mail me perdi (ademas me
> llegaron desordenados :/ ). Yo veo 2 cosas... si quieres tener connection
> pooling puedes hacerlo sin necesidad de JNDI. En vez de eso puedes usar
> directamente commons dbcp (http://commons.apache.org/dbcp/) o C3P0
> (http://tom.tharrisx.homedns.org/javalib/c3p0-0.8.4.5/doc/)
> definiendo el datasource correspondiente. Pero bueno, segun lei por ahi
> estas interesado en aprender. Si tu datasource esta en un glassfish lo
> que necesitas es acceder al servicio JNDI del contenedor. Te recomiendo
> ver este link:
>
> https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRem...
>
> Es para llamar a EJB's desde aplicacion standalone, pero el punto de
> partida para EJB's como para datasources es el mismo: JNDI, por lo tanto
> puedes seguir esos pasos (si te fijas vas a tener que agregar un jar de
> glassfish a tu proyecto). Otra cosa que puedes hacer es agregarle tu
> propio servicio de JNDI a la aplicacion... para esto tienes alternativas
> como simple-jndi (http://www.osjava.org/simple-jndi/) o directory de
> apache (http://directory.apache.org/subprojects/naming/index.html)..
> creo que con spring tb habia algo parecido a un JNDI "mula" supuestamente
> para facilitar testing, pero de ese dato no recuerdo mucho.
>
> ----
> Ariel Aguayo B. (aragu...@dcc.uchile.cl)

Ariel Alejandro Aguayo Bascu~an

unread,
Jan 14, 2009, 1:30:14 PM1/14/09
to jug.cl
On Wed, 14 Jan 2009, jug wrote:

Con Ibatis directamente:

http://opensource.atlassian.com/confluence/oss/display/IBATIS/How+do+I+configure+a+Jakarta+DBCP-datasource

Usando Spring:

http://nerdnotes.wordpress.com/2007/03/30/basic-transactions-in-spring-using-transactionproxyfactorybean/

En particular solo necesitas el bean "dataSource" definido ahi.

Si quieres ver que propiedades son seteables (tamanno min, max del pooling
y cosas asi) mira el javadoc de SimpleDataSource:

http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/BasicDataSource.html
----
Ariel Aguayo B. (arag...@dcc.uchile.cl)

Reply all
Reply to author
Forward
0 new messages