Hi,

The current JBoss implementation does the following mapping for JDBC access:

Types.CLOB, LONGVARCHAR:        use set/getCharacterStream
Types.BLOB, LONGVARBINARY       use set/getBinaryStream
Types.BINARY, VARBINARY         use set/getBytes

So, you could try setting the JDBC type to LONGVARBINARY.

I recently said the following to an Oracle user, and I think it applies to you as well:

"In my opinion (knowing what I know now about EJB entity beans), you should not be storing LOBs in your primary entities anyway. Getting the LOB data to your client may result in multiple copies of it being instantiated in memory - and given the nature of LOBs (they can be BIG ;-) ), this may be quite expensive and it won't scale very well.

I would either keep the LOB data in separate related tables, or use the same table and hide the LOB columns from the CMP engine by mapping the table to a couple of views. Then use a business facade style of session bean to load the LOB data in whatever fashion you see fit using pure JDBC or even the Oracle extensions. It may even be advantageous to load it directly from the client side using a business delegate and get full and proper advantage of the streaming interfaces.

Use the CMP engine to get yourself up and running quickly (you seem to have accomplished that) and then refine it as above and I think your application will be much happier."

Regards,

Steve Coy


On Wednesday, August 6, 2003, at 12:36 AM, Jonathan.O'[EMAIL PROTECTED] wrote:


Further migration problems have reared their head. The Sybase JDBC driver
throws an exception when I try to write a blob using CMP. It complains
that SQL Type 1004 is not supported. This is SqlType.BLOB.


On talking to colleagues who have written JDBC code for sybase and blobs,
I have been told that we should use SqlType.BINARY and call
PreparedStatement.setBinaryStream() instead of setBytes().
Whatever, I would like to hear of anybody out there who is using JBoss
(We're on 3.0.6) and Sybase 12.0 to write blobs (IMAGE in Sybase SQL).


Finally, here's the stack trace:
13:14:31,918 ERROR [Dispute] Could not create entity
java.sql.SQLException: JZ006: Caught IOException: java.io.IOException:
JZ0SL: Unsupported SQL type 2004.
at
com.sybase.jdbc2.jdbc.ErrorMessage.raiseError(ErrorMessage.java:526)
at
com.sybase.jdbc2.jdbc.ErrorMessage.raiseErrorCheckDead(ErrorMessage.jav a:762)
at com.sybase.jdbc2.tds.Tds.handleIOE(Tds.java:3160)
at com.sybase.jdbc2.tds.Tds.language(Tds.java:702)
at
com.sybase.jdbc2.jdbc.SybStatement.sendQuery(SybStatement.java:1451)
at
com.sybase.jdbc2.jdbc.SybPreparedStatement.sendQuery(SybPreparedStateme nt.java:1168)
at
com.sybase.jdbc2.jdbc.SybStatement.executeUpdate(SybStatement.java:1621 )
at
com.sybase.jdbc2.jdbc.SybPreparedStatement.executeUpdate(SybPreparedSta tement.java:91)
at
org.jboss.resource.adapter.jdbc.local.LocalPreparedStatement.executeUpd ate(LocalPreparedStatement.java:308)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.insertEntity(JDB CCreateEntityCommand.java:196)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.execute(JDBCCrea teEntityCommand.java:131)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createEntity(JDBCStoreM anager.java:527)
at
org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistence Manager.java:253)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.create Entity(CachedConnectionInterceptor.jav
a:270)
at
org.jboss.ejb.EntityContainer.createLocalHome(EntityContainer.java:580)
at sun.reflect.GeneratedMethodAccessor40.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityCon tainer.java:1119)
at
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractIntercepto r.java:73)
at
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(Entit ySynchronizationInterceptor.java:207)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke Home(CachedConnectionInterceptor.java:
215)
at
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractIntercepto r.java:73)
at
org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstan ceInterceptor.java:90)
at
org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterc eptor.java:79)
at
org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreati onInterceptor.java:44)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterc eptor.java:111)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercepto rCMT.java:228)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java :62)
at
org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityIntercepto r.java:105)
at
org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:129 )
at
org.jboss.ejb.EntityContainer.invokeHome(EntityContainer.java:487)
at
org.jboss.ejb.plugins.local.BaseLocalContainerInvoker.invokeHome(BaseLo calContainerInvoker.java:230)
at
org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:1 10)
at $Proxy145.create(Unknown Source)
at
xcom.traxbahn.bproc.ejb.DisputeBcBean.createNewDispute(DisputeBcBean.ja va:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja va:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(Sta telessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke (CachedConnectionInterceptor.java:186)


at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Statel essSessionInstanceInterceptor.java:77)


at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterc eptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercepto rCMT.java:228)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:92)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.ja va:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContaine r.java:313)
at org.jboss.ejb.Container.invoke(Container.java:712)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:38 2)
at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460 )
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.j ava:701)
at java.lang.Thread.run(Thread.java:536)
13:14:31,928 ERROR [STDERR] com.sybase.jdbc2.jdbc.SybSQLException: A wrong
datastream has been sent to the server. The s
erver was expecting token 236 but got the token 33. This is an internal
error.
13:14:31,928 ERROR [STDERR] at
com.sybase.jdbc2.tds.Tds.processEed(Tds.java:2672)
13:14:31,928 ERROR [STDERR] at
com.sybase.jdbc2.tds.Tds.nextResult(Tds.java:2032)
13:14:31,928 ERROR [STDERR] at
com.sybase.jdbc2.tds.Tds.doCommand(Tds.java:2718)
13:14:31,928 ERROR [STDERR] at
com.sybase.jdbc2.tds.Tds.endTransaction(Tds.java:1586)
13:14:31,928 ERROR [STDERR] at
com.sybase.jdbc2.jdbc.SybConnection.rollback(SybConnection.java:840)
13:14:31,928 ERROR [STDERR] at
org.jboss.resource.adapter.jdbc.local.LocalManagedConnection.rollback(L ocalManagedCon
nection.java:282)
13:14:31,928 ERROR [STDERR] at
org.jboss.resource.connectionmanager.LocalTxConnectionManager$LocalConn ectionEventLis
tener.rollback(LocalTxConnectionManager.java:658)
13:14:31,928 ERROR [STDERR] at
org.jboss.tm.TxCapsule.rollbackResources(TxCapsule.java:1779)
13:14:31,928 ERROR [STDERR] at
org.jboss.tm.TxCapsule.rollback(TxCapsule.java:475)
13:14:31,928 ERROR [STDERR] at
org.jboss.tm.TransactionImpl.rollback(TransactionImpl.java:83)
13:14:31,928 ERROR [STDERR] at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercepto rCMT.java:241)


13:14:31,928 ERROR [STDERR] at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:92)
13:14:31,928 ERROR [STDERR] at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.ja va:130)
13:14:31,928 ERROR [STDERR] at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
13:14:31,928 ERROR [STDERR] at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContaine r.java:313)
13:14:31,928 ERROR [STDERR] at
org.jboss.ejb.Container.invoke(Container.java:712)
13:14:31,928 ERROR [STDERR] at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
13:14:31,928 ERROR [STDERR] at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:38 2)
13:14:31,928 ERROR [STDERR] at
sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
13:14:31,928 ERROR [STDERR] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25)


13:14:31,928 ERROR [STDERR] at
java.lang.reflect.Method.invoke(Method.java:324)
13:14:31,928 ERROR [STDERR] at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
13:14:31,928 ERROR [STDERR] at
sun.rmi.transport.Transport$1.run(Transport.java:148)
13:14:31,938 ERROR [STDERR] at
java.security.AccessController.doPrivileged(Native Method)
13:14:31,938 ERROR [STDERR] at
sun.rmi.transport.Transport.serviceCall(Transport.java:144)
13:14:31,938 ERROR [STDERR] at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460 )
13:14:31,938 ERROR [STDERR] at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.j ava:701)
13:14:31,938 ERROR [STDERR] at java.lang.Thread.run(Thread.java:536)


Ciao,
Jonathan O'Connor
XCOM Dublin



-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/ direct;at.aspnet_072303_01/01
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user



------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01 _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to