powered by Jive Software

Openfire 3.4.3, Oracle DB, Windows AD, Avatars...working?

Ok…Upgraded to 3.4.3 last night. Everything started up fine, DB upgraded, and users could login. I was getting the same error other people posted…Server does not support VCards.

So I guess that there must be a way to turn the vcard stored in DB functionality on in the management GUI and find it in the Profile Settings wizard. After I was made the change I stopped and restarted the server and now no one can login. Looking at the openfire.xml I discover that the LDAP wizard screwed up the search filter and group search filter…

<searchFilter>(&amp;(objectCategory=Person)…

<groupSearchFilter>(&amp;(objectCategory=Group)…

So I took out the extra “amp;”…

<searchFilter>(&(objectCategory=Person)…

<groupSearchFilter>(&(objectCategory=Group)…

…and users could login again. Unfortunatly, I was still getting the VCard error when trying to save the avatar. Back to the forums I dicovered the note about removing the <FN></FN> tag from the config…after a restart, success! Or so I thought.

This morning I logged in and no avatar. I thought it odd so I logged off and back on and still no avatar. So I re-add it to my profile and it seems to work great. So this got me thinking. I open SQL Developer to take a look at the Jive schema and I can not find a table/field that is holding the avatar. (There are a couple of BLOB fields for the gateway plugin, but no other blobs in the DB.)

It seems to me…at least with my configuration that the avatar is temporarily held in the Openfire Cache but never actually written to the database. When I log off for a while it gets cleared from cache and is no longer there. Can someone confirm my findings?

Thank you…

-Andy

Just want to update with more info. When I save the vcard I see the following generated in the Error log on the Openfire server:

2008.01.03 15:23:27 [org.jivesoftware.openfire.vcard.DefaultVCardProvider.createVCard(DefaultVCardP rovider.java:113)

] Error creating vCard for username: andy250

java.sql.SQLException: Data size bigger than max size for this type: 10348

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)

at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java:147)

at oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.java:2460)

at oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStatement.java :1190)

at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.ja va:1610)

at org.jivesoftware.openfire.vcard.DefaultVCardProvider.createVCard(DefaultVCardPr ovider.java:109)

at org.jivesoftware.openfire.ldap.LdapVCardProvider.updateVCard(LdapVCardProvider. java:273)

at org.jivesoftware.openfire.vcard.VCardManager.setVCard(VCardManager.java:132)

at org.jivesoftware.openfire.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:8 2)

at org.jivesoftware.openfire.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:348)

at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:100)

at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:67)

at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:303)

at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler .java:78)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:268)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:167)

at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:132)

at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived (AbstractIoFilterChain.java:570)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58)

at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:173)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java :239)

at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(Execut orFilter.java:283)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)

at java.lang.Thread.run(Unknown Source)

Another followup. Found out that using LONG data types for this type of storage has been depreciated since 9i (the DB version I am running). This field should really be a BLOB. I did try upgrading the driver to 10g and get a different, but basically similar error.

2008.01.04 10:16:52 [org.jivesoftware.openfire.gateway.util.Log4JToOpenfireAppender.append(Log4JToO penfireAppender.java:49)

] Avatar: SQL exception while inserting avatar:

java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)

So in my case, I can either wait for a fix or move away from using Oracle. If the latter is recommended, I would take Oracle off your list of supported databases. If the former…can someone open an issue?

-Andy