V2.2.1 is waisting connections / kodo 2.2.1 usable?

Hi,
Summary of the problem: Since 2.2.1, the deepness of the object mapping
seems to have a direct correlation to the minimum number of connections
needed to execute any query. Insufficient connections cause a kodo system
lock.
I'm currently moving from version 2.1.3 to 2.2.1 and realized a behaviour
that seems to be quite problematc:
If the pool-part of system.prefs is missing, any deepness of object mapping
can be resolved by version 2.2.1. Good.
If the pool-part of system.prefs is provided with min=1/max=1 and the query
accesses an 1:1 mapping, the target objects of the query can be resolved.
Also good.
If the pool-part of system.prefs is provided with min=1/max=1 and the query
accesses an 1:n mapping, the target objects can't be provided because kodo
locks. Very bad.
If I change the max pool size to '2', the query can be executed.
We are currently working with a more complex extend respectively class
graph. Querying our class graph on the root level was no problem with kodo
2.1.3, but using kodo 2.2.1 we need a pool size of _13_ connections to query
some objects!!!! I wouldn't call this an expected behaviour.
If I don't use the kodo connection pooling and change the data source by
calling JDBCPersistenceManagerFactory.setConnectionFactoryName(jndiPath) to
use own connection pools, the problem is exactly the same: The pool must
have at least _13_ connections for our extent, or more generally spoken, at
least 2 connections for querying a 1:n mapping. I didn't check the number
for n:m, nor the exact number for first class objects as part of other FCOs
depending on their mapping.
So, as a summary, it seems as if the nesting of SQL-Statements and their
connection caching during execution has changed in 2.2.1 in a way that seems
quite problematic (or even unusable) not only for complex queries.
If a team is working on the same project it is usually also working on the
same test database which is sometimes also used by other development teams.
Opening _13_ or even more connections per connection pool (often more than
just one connection pool is needed) per team member to a central database
will easily lead to resource problems. This won't be the case on production
time, but code has to be developed prior, hasn't it :)
Did I oversee anything? Or is the problem know by anyone?
Cheers,
Christian Elsen

Hi Patrick,
> Summary of the problem: Since 2.2.1, the deepness of the object
> mapping seems to have a direct correlation to the minimum number
> of connections needed to execute any query. Insufficient
> connections cause a kodo system lock.
It was a long try-and-error-research, but I found an indicator to the
problem: first class objects that belong to the default-fetch-group.
In the attached example I use a class D with an Arraylist of class E
objects and query for all D objects. The pool size is always min=1/max=1.
-case 1: the list of E objects of class D does not belong to
the default fetch group => The query is executed as expected
-case 2: the list of E objects of class D belongs to
the default fetch group => The query is locked until the
timeout duration for the pool elapses (default=10sec).
If I increase the pool max to 2, the query is executed as expected.
I didn't try a default-fetch-group-recursion, but I expect a recursive
behaviour: Having an FCO in the default-fetch-group that has an FCO in
the default-fetch-group that has an FCO in the default-fetch-group....
leads to an increased number of connections needed to execute a query.
We currently work on a quite complex mapping and have to query for the
'root' of the Extend is some cases => therefore we today need a pool
with 14! connections to execute the query. The problem arised with kodo
version 2.2.1, in 2.1.3 one connection was enough to execute the query.
I wonder if the problem depends just on version 2.2.1 or maybe on our
environment, but the observations point to the kodo implementation.
In production this behaviour won't be acceptable, as I described in my
first comment. It would be nice to hear if the results are reproducable.
If they are, we maybe have to look for other jdo implementations, as our
production date is in about 3 weeks, although we're quite satisfied with
the implementation (not regarding the described big problem).
Regards,
Christian
PS: Are there any guidelines of how to size the pools depending on the
used mapping?
I cannot reproduce your problem. I'm trying with a test case with three
classes: A, B, and C. A has a list of B's and B has a list of C's. Both
of these lists are one-to-manys. I run a query on A whose filter digs
through B into C. pool/min is set to 0, and pool/max is set to 1. The
query works.
I've attached my test class and package.jdo. Can you alter this to make
it reproduce your problem, or provide me with code that displays the
behavior that you described?
Further, what database are you running against? I've only run my test
against InstantDB.
-Patrick

Similar Messages

  • Tranaction with KODO JCA and DAO

    Hi,Abe,
    I use KODO JCA with JBoss3.2.1.We encounter some problem with transaction.We use CMT(Container Management Transaction)provider by JBoss EJB container.
    the seniario is:
    public class SessBeanA iimplements SessionBean{
    public void method(){
    A a_new A();
    a.method1();
    B b_new B();
    b.method2();
    public class A{   _
    method1(){
    //use KODO jdo insert one record. _
    public class B{
    method2(){
    //use DAO query the record insert.
    method() inSessBeanA is configued use CMT and start new tranction when called.
    We want to keep a.method1() and b.method2() in same transaction(method1() and method2() use transaction created by method()).but unfortunately,as they use different DB connection instance(one is from KODO JDO JCA,the other is from direct JDBC),they didn't keep in same transaction.so b.method2() can't find the record insert by a.method1() because method1() hasn't commit.
    you know,as for complexity,we can't use only KODO for insert/query,we had to use other technology like DAO.Would you pls tell us how to keep KODO JDO call and our DAO call in same transaction?
    Regards,
    geduo

    Consider getting a database connection from Kodo using JDBCStoreManager,
    i.e.
    KodoPersistenceManager.getStoreManager().getConnection() or
    KodoPersistenceManager.getConnection() I think.
    Then you'll get the same connection Kodo is using and hence the same
    transaction associated with it.
    Alex.
    geduo wrote:
    This is a multi-part message in MIME format.
    ------=_NextPart_000_001D_01C3CF8B.2D85C0D0
    Content-Type: text/plain;
         charset="gb2312"
    Content-Transfer-Encoding: quoted-printable
    Hi,Abe,
    I use KODO JCA with JBoss3.2.1.We encounter some problem with =
    transaction.We use CMT(Container Management Transaction)provider by =
    JBoss EJB container.
    the seniario is:
    public class SessBeanA iimplements SessionBean{
    public void method(){
    A a=3Dnew A();
    a.method1();
    B b=3Dnew B();
    b.method2();
    public class A{   =20
    method1(){
    //use KODO jdo insert one record. =20
    public class B{
    method2(){
    //use DAO query the record insert.
    method() inSessBeanA is configued use CMT and start new tranction when =
    called.
    We want to keep a.method1() and b.method2() in same =
    transaction(method1() and method2() use transaction created by =
    method()).but unfortunately,as they use different DB connection =
    instance(one is from KODO JDO JCA,the other is from direct JDBC),they =
    didn't keep in same transaction.so b.method2() can't find the record =
    insert by a.method1() because method1() hasn't commit.
    you know,as for complexity,we can't use only KODO for insert/query,we =
    had to use other technology like DAO.Would you pls tell us how to keep =
    KODO JDO call and our DAO call in same transaction?
    Regards,
    geduo
    ------=_NextPart_000_001D_01C3CF8B.2D85C0D0
    Content-Type: text/html;
         charset="gb2312"
    Content-Transfer-Encoding: quoted-printable
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML><HEAD>
    <META http-equiv=3DContent-Type content=3D"text/html; charset=3Dgb2312">
    <META content=3D"MSHTML 6.00.2600.0" name=3DGENERATOR>
    <STYLE></STYLE>
    </HEAD>
    <BODY>
    <DIV>
    <DIV><FONT face=3DArial size=3D2>Hi,Abe,</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT> </DIV>
    <DIV><FONT face=3DArial size=3D2>I use KODO JCA with JBoss3.2.1.We =
    encounter some=20
    problem with transaction.We use CMT(Container Management =
    Transaction)provider by=20
    JBoss EJB container.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>the seniario is:</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT> </DIV>
    <DIV>
    <DIV><FONT face=3DArial size=3D2>public class SessBeanA iimplements=20
    SessionBean{</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>    public void=20
    method(){</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>        A =
    a=3Dnew=20
    A();</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>       =20
    a.method1();</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>        B =
    b=3Dnew=20
    B();</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>       =20
    b.method2();</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>    }</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>}</FONT></DIV></DIV>
    <DIV><FONT face=3DArial size=3D2>public class A{    =
    </FONT></DIV>
    <DIV>
    <DIV><FONT face=3DArial size=3D2>    =
    method1(){</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>        =
    //use KODO=20
    jdo insert one record.    </FONT></DIV></DIV>
    <DIV><FONT face=3DArial size=3D2>    }</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>}</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT> </DIV>
    <DIV><FONT face=3DArial size=3D2>public class B{</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>    =
    method2(){</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>        =
    //use DAO=20
    query the record insert.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>    }</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>}</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT> </DIV>
    <DIV><FONT face=3DArial size=3D2>method() inSessBeanA is configued =
    use CMT and=20
    start new tranction when called.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT> </DIV>
    <DIV><FONT face=3DArial size=3D2>We want to keep a.method1() and =
    b.method2() in same=20
    transaction(<STRONG>method1() and method2() use transaction =
    created</STRONG>=20
    <STRONG>by method()).</STRONG>but unfortunately,as they use different DB =
    connection instance(one is from KODO JDO JCA,the other is from direct =
    JDBC),they=20
    didn't keep in same transaction.so b.method2() can't find the record =
    insert by=20
    a.method1() because method1() hasn't commit.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>you know,as for complexity,we can't use =
    only KODO=20
    for insert/query,we had to use other technology like DAO.Would you pls =
    tell us=20
    how to keep KODO JDO call and our DAO call in same =
    transaction?</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT> </DIV>
    <DIV><FONT face=3DArial size=3D2>Regards,</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>geduo</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT> </DIV>
    <DIV><FONT face=3DArial size=3D2></FONT> </DIV>
    <DIV><FONT face=3DArial size=3D2></FONT> </DIV></DIV></BODY></HTML>
    ------=_NextPart_000_001D_01C3CF8B.2D85C0D0--

  • Why does my partners iPhone 4s not connect to WiFi, but a similar model does?

    Me and my partner both have an iPhone 4s, both bought within a month of each other about 18 months ago, with the same iOS version (7.0.2 (11A501) ), same model number (MD235B/A), and same modem firmware number (5.0.00).  However, while mine has never had a problem connecting to Wi-Fi anywhere, hers will not connect at home unless she is stood right next to the router.  The signal progressively dies off as she gets into the next room, and wont reconnect to the Wi-Fi.  My exact same phone has no problems.
    When my partner is out and about and accessing Wi-Fi there is absolutely no problem at all, it connects fine and is completely usable as you would expect.  The only issue is our connecting at home.
    I have already attempted to reset the network settings and this gave a very weak signal, but useable.  She left the house, came back, and once again the iPhone wouldn't find the Wi-Fi.
    Going into my router, it showed the device as 'Inactive', so I deleted it to try and let it detect the phone as new, but while it allowed me to connect it to the router like before, it is not showing as a detected device in my router settings.
    EDIT : 5 minutes after connecting, the phone has once again reverted to a 3G only signal and has lost the Wi-Fi connection.
    My partner tells me that there was no problem before changing the security of the router about 7-8 months ago from WEP to WPA2, but I don't necessarily believe that.  I don't really see this as a problem anyway because in the past I've found the lesser security settings to cover up other problems along the way.
    What else can I try to get this sorted?  I'm thinking that there is an actual problem with the phone rather than a settings issue, however it would be good to get some other advice.

    No-one at all?
    This has never happened to anyone, nor can anyone offer advice?
    If not then it's off to the Genius Bar

  • All of a sudden, unable to connect to internet

    I can get on the net, but after a while I get the message that I can't connect. I click on network diagnostics and the problem resolves itself. All is good for a bit but then suddenly the issue arises again. I may go for a few days without this issue cropping up, but then it may happen 3 times during a surfing session. This issue has only recently started happening. I know this description is vague, but any ideas? Thanks.

    If your connection is Ethernet, and Network Diagnostics is flagging Ethernet and everything else all-red, check and make sure that the connecting cable isn't nicked or pinched and that the cable ends aren't loose (try jiggling them near the connector or gently pulling and see if the network connection goes up and down (flashes red or green on Ethernet status indicator on left side of Network Diagnostics) with your jiggling/tugging. If it does, replace the cable. The cable should never pull out the port without clicking the unlocking tab on the connector. Often this tab is bent and ineffective at locking the cable into the port firmly or is broken off. In either of those cases, replace the cable.
    If your connection is AirPort, make sure you don't have a boat-load of too many competing networks operating in proximity of the computer. A symptom of this is the number of networks viewable by AirPort from the menu bar. Confirming collaborating info is when the alt key + menu drop down shows your airport speed keeps changing every time you click it up. If your connection is truly stable, speed changes will be rare or never and should be close to theoretical maximums for the class of WiFi connections you setup (B= ~12 Mbps max, G= ~56 Mbps max, etc).. You I recently was forced to wire my connections to the AirPort Extreme hub I use because there are like 8-11 networks popping up any time I check using the menu bar Airport status menu drop down (use it with alt key held for a LOT more useful info including signal strengths and throughput speeds). If there are too many competing networks, the chaos caused by all of the various networks with automated settings for rolling channels when they find too much signal interference causes a cascade of network instability for all of the networks as they each keep changing channels to try avoiding each other and everyone's network connections start suffering or collapsing as a result. If you have a wireless issue like this and don't want the tether of a wired connection, consider talking to your neighbors about changing all of their wireless settings off of automated channel selections and sit down and everyone decide to pick a particular channel and stick with it so everyone's network connections can remain stable and usable until the next idiot ads a new WiFi network again and everything starts collapsing as his network starts stomping on everyone else's channels looking for a less busy one... Did I say wireless *****?
    If Network Diagnostics tells you that ONLY the ISP, Internet and/or server connection is failing, look further upstream at your connection from your home or office to the net ISP itself. If it is a phone company DSL connection, consider getting a more reliable service like FiOS or Cable modem if available as DSL is notoriously unreliable and may go down frequently / randomly if you are any good distance from the phone company switching office in your locale. Cable and FiOS are generally very stable connections with FiOS being the most stable and fastest of all connection types available to consumers. If it is the Server only that is failing, that can also be a problem at your ISP which your only resort is to switch ISPs if they are so incapable of providing reliable service....
    The only other problem can be using too many net-connected applications at once with wrong settings for throttling in the apps. When I had cable modem service, I used to cripple my household network so no computers could load anything if I used a fast Mac running a bit torrent client and failed to throttle the upload speeds of the app. It would saturate the upload link, then all the other Macs weren't able to get through their URL requests uploaded to receive webpages back because their URL queries simply got drowned out by the sheer volume of data being pumped out by the bit torrent software and a lack of bandwidth available to get out further data. Lesson here: Watch your upload speeds if you start having trouble with download speeds.

  • WRT54G Connection Drop

    I've got a WRT54Gv5, and recently, I have received intermittent disconnects, usually three or more times an hour for the last two days. Rogers claims to not have had service outages in my area recently. Coincidentally, a friend of mine is having identical problems - Same ISP, same router. I am not saturating the number of connections on the router, either. A quirk to this is that when I am disconnected, my existing connections remain open and are usable (For example, IM clients), but new connections (Such as loading a website) are unable to connect.

    i have the same problem  talked to linksys they advised me it my isp  called my isp
    they advise it the linksys router  so got to call them back   looks like this is a common issue with this router 

  • BEFW11S4 wireless connection lost after reboot / sleeping

    I am using the linksys wireless router BEFW11S4 version 4, firmware version 1.5, to connnect two winXP computers, one a desktop (wired) and one a laptop (wireless).
    The wireless connection was created using the EasyLink Advisor software (support.linksys.com).  The wireless connection made by this software to my laptop has no signal strength problems.  A wired connection to my laptop also has no problems.
    However, if a wireless connection is made, it is broken when my laptop is restarted or sleeps (power saving mode).  The sysTray indicates a wireless connection that has "limited or no connectivity".  I cannot browse the internet.  The EasyLink advisor automatically detects a problem and prompts ot repair it.  Though after a few steps the EasyLink Advisor indicates that a "wireless connection failed to be made", the sysTray shows a healthy connection, and it becomes possible to browse at this point.
    I'm hoping to make a connection that doesn't need to be re-established every time I leave my computer.  Has anyone experienced a similar problem?

    Carrot, thanks very much for your message. I tried updating the "firmware" -- is that what you meant by drivers?
    By following the instructions at http://linksys.custhelp.com/cgi-bin/linksys.cfg/php/enduser/std_adp.php?p_faqid=4030&lid=7771778881B05,
    I upgraded the firmware which involved performing a factory reset on the router, and re-establishing the network using the EasyLink Advisor.
    All of the steps were carried out easily according to the instructions and there were no hitches or exceptions. The wireless connection made was strong and usable. At this time I added my second (desktop) computer which has a wired connection, by following the "add another computer" wizard in EasyLink Advisor.
    This completed the re-setup of my network with new firmware.
    I then restarted my wireless laptop, and, unfortunately, the connection was lost, as usual.
    any other suggestions?
    Thanks again!

  • Do I have to have an unlock code to change my SIM card and use my iPad in France

    My iPad 2 has an Orange SIM card which is quite expensive to use roaming, during a trip to France at Easter with our camper found it very difficult to find a good WiFi connection (couldn't find anything usable to Skype).  I understand that we could now get a Pay as you go SIM from 3 that can be used in Europe, can anyone tell me whether I need an unlock code to swap this over?
    Thank you

    Depends on whether you bought your iPad from Orange on a contract with the SIM already in there or whether you bought the iPad unlocked directly from Apple and then bought a SIM from Orange separately.
    If you got it unlocked from Apple then you can put any SIM in there. If you didn't and are still under contract to Orange then I doubt they would allow you to put a Three SIM in there (i.e. unlock it).

  • Bonjour file-sharing?

    Regarding Bonjour for Windows:
    Basically, I just have two Windows computers connected to the same wireless network that I want to share files between without configuring domains/workgroups/etc. I thought Bonjour would help me with this. Does anybody have any experience in doing this? I installed Bonjour on the two computers and no connected printers showed up as usable, but I also had forgotten to enable printer sharing (I'll try it later, but printer-sharing is secondary to file sharing). Do I just enable file sharing and the "shared documents" folder will be available to both computers? How does it show up? In "My Computer"?
    Any advice would be appreciated.
    Note: this is not between Windows and a Mac, just Windows to Windows.

    I'm not aware of any "built in" tools in XP for file-sharing that do not require setting up a network with domains/workgroups. This is what I was hoping Bonjour would help to do, and asked about in my original question. After all, I can share iTunes libraries without doing any of that, why not printer and file sharing?
    If I have to set up workgroups, I suppose I'll look into it, but I was hoping that there was another way. Is Bonjour for Windows only intended to facilitate communication on mixed Windows/Mac networks?
    By the way - this is not a "MAC" forum, per se. This is a "Bonjour for Windows" forum, a place to get support on Apple's "Bonjour for Windows". Therefore, I'm asking a question about Bonjour... on Windows.

  • No phone signal, Can't get a phone signal on my iPad 2. Sigal is strong on my iPhone.  Tried reset and power off.

    Currently traveling in Scotland with slow connection.  I get a usable phone signal in my wife's iPad and my iPhone but my iPad2 shows "no service". Have tried shutdown and reset both manually and odd the Settings menu. What else can I try?

    I'm not 100% on this, but I am pretty sure, You can only use the carrier which your sim is locked to. Changing it will likely result in an error. If you are on different carriers, then you are stuck, sadly. You may like to buy a new sim for your iPad, from a carrier which you know you can get signal from where you are. Ask in a phone shop, or a shop which sells the iPad, if there are any.
    Regards,
    Nathan

  • Skype dropouts now both ends using Infinity

    My son lives in a hospice in Hereford and we keep in touch daily via skype.
    Over the last few days infinity has been installed at my sons hospice and ever since then I have been having receive dropouts / hangs about every 5 seconds.  Both ends of the conversation are macs using Mac OS X 10.8.5.
    Before this 'upgrade' the connection was slow but quite usable, I just cannot understand why this should be occurring.  Any suggestions?
    Just for info as it is a new connection I do not know what HH is installed (although I would expect HH4, I have a HH4), I assume that the connection is Infinity 1 as I checked performance and it was around 30Mb/s on Wednesday.
    There is an added complication in that there is a wireless connection from the main site to the actual residence by line of sight which was installed and is supported by a 3rd party. 

    Skype has a known problem ATM and it's being worked on. It has nothing to do with BT or your connection.
    Hopefully Microsoft (now own Skype) will have it resolved quickly.

  • JPA @Lob annotation and memory problem

    Hi.
    Is there any way to overcome the memory problem with @Lob types?
    FetchType.LAZY means lazy as it spelled. Am I right?
    And it doesn't mean any stream handling of big sized lobs. For lobs are so big that my physical memory can't hold it.
    @Entity public class Parent implements Serializable {
        @Lob private byte[] big; // what can I do if it is to big to hold in memory?
    }Is there any standard way for this problem?
    I found that openejb serves *@Persistent* annotation for InputStream/Reader for this purpose.
    But I want to know if there is another way for more portability.
    You know what?
    I heard from a JPA spec guy that this problem (maybe it's not a problem) won't even be considered in next version. (2.0?)
    How horrible...
    Is it can be a good think that split the Lob column into a OneToMany children?
    This is the best output, for now, from my head.
    @Entity public class Parent implements Serializable {
        @OneToMany private Collection<Child> children;
    @Entity public class Child implements Serializable {
        @Lob private byte[] chopped; // small enough to fit into memory
    }

    If the Lob is too big for your memory, then you are best off handling whatever processing you need to do on it through raw JDBC. If your only interested on the first n bytes, then you could probably map to something like this using a view the truncate the lob, and map your class to the view instead of the table.
    You should also be able to define your variable as Blob or Clob and get the locator directly. But the locator is tied to the connection, so will not be usable after the connection is returned to the pool. I'm not sure how such a lob could be model if it can't be read into memory, perhaps as some special JPA Lob type that can return a stream on the data by re-querying the lob from the db.
    What exactly to you want to do with the lob?
    -- James : http://www.eclipselink.org

  • Wont turn on, plugged in, wont recognize simcard

    my girlfriend's iphone4 wont turn on, and when it's plugged in, it will turn on but go into the "connect to itunes" screen and usable for emergency calls.
    secondly, when pushing the info button on that screen, the imei/sim says "unknown"
    the problem is, we are currently out of the country for at least another month, and her computer that holds her itunes is not within reach.
    is it not recognizing the sim card? is it battery issue? hardware issue? will an apple store be able to take care of it without losing photos mostly, or do i need to wait til i go back to the states to go to an at&t store, thank you very much ahead of time

    An Apple Store may be able to help, but first try using RecBoot and see if that will kick it out of recovery mode.
    Basic troubleshooting steps.
    Check out the new remodeled MacOSG website! 24-hour Apple-related news & support.
     MacOSG: An Apple User Group  iTunes: MacOSG Podcast  Follow us on Twitter: MacOSG

  • Kodo not recovering from bad connection in new MySQL driver

    Hi,
         I'm using kodo 2.4.1 and the latest stable MySQL driver 3.0.6. After
    leaving the application inactive for a few hours, the connection to
    mysql is no longer usable. This did not occur with MySQL version 2.0.14
    (as I believe Kodo weren't reusing the connections).
         Are there any properties that I could set, so Kodo can keep the
    connection active or recover from the problem?
    Makas

    Ok, thanks Marc, like I said though, I am now re-using MySQL 2.0.14
    driver. I'm not sure if I'm gaining any advantages with MySQL 3.0.6 anyway.
    But I'll probably upgrade it after the next Kodo is released.
    Makas
    Marc Prud'hommeaux wrote:
    Makas-
    Sorry ... I didn't test the property I sent. The problem is that our
    options parsing does not deal with spaces (this will be fixed in the
    next release).
    Instead of ValidateConnectionSQL="SELECT 1", you should be able to use
    ValidateConnectionSQL=SELECT(1), which does not contain spaces.
    In article <[email protected]>, Makas Tzavellas wrote:
    Marc,
    Using the properties you wrote, kodo doesn't seems to be able to parse
    it. I've also tried various other combinations with no success. I'm now
    going to use the older mysql driver.
    Marc Prud'hommeaux wrote:
    Makas-
    Kodo should be re-using the MySQL Connection in exactly the same way,
    regardless of the version. The problem is that it looks like MySQL people
    slipped in an "optimization" into 3.0.6 whereby Connection.isClosed()
    does not actually test the state of the Connection, but instead just
    returns true if and only if Connection.close() has been invoked.
    You can get around this by specifying some SQL to validate the
    Connections. The following property should do the trick:
    com.solarmetric.kodo.impl.jdbc.DictionaryProperties=\
    ValidateConnections=true \
    ValidateConnectionSQL="SELECT 1"
    Please let us know if the problem persists.
    In article <[email protected]>, Makas Tzavellas wrote:
    Hi Marc,
         Here're the stack trace of the exception and the kodo properties. There
    isn't any long running transaction. The application is basically left
    idle for some time and subsequent connections fails. It could be
    connections obtained from the pool, but I'm not sure.
         I will re-use mysql 2.0.14 for now. Please let me know if I'm missing
    any other properties or if you need more info.
    # Kodo JDO Properties configuration
    # To evaluate or purchase a license key, visit http://www.solarmetric.com
    com.solarmetric.kodo.CacheReferenceSize=1000
    com.solarmetric.kodo.ee.ManagedRuntimeProperties=TransactionManagerName=java:/TransactionManager
    javax.jdo.PersistenceManagerFactoryClass=com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory
    javax.jdo.option.ConnectionDriverName=org.gjt.mm.mysql.Driver
    javax.jdo.option.ConnectionUserName=
    javax.jdo.option.ConnectionPassword=
    javax.jdo.option.ConnectionURL=jdbc:mysql://hostname/database?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
    javax.jdo.option.MinPool=0
    javax.jdo.option.MaxPool=20
    javax.jdo.option.Optimistic=true
    javax.jdo.option.RetainValues=true
    javax.jdo.option.NontransactionalRead=false
    com.solarmetric.kodo.impl.jdbc.ConnectionTestTimeout=10
    com.solarmetric.kodo.impl.jdbc.AutoReturnTimeout=10
    com.solarmetric.kodo.impl.jdbc.DictionaryClass=com.solarmetric.kodo.impl.jdbc.schema.dict.MySQLDictionary
    com.solarmetric.kodo.DataCacheProperties=Port=5555
    Addresses=repository2.kl.ewarna.com:5555;repository.kl.ewarna.com:5555
    CacheSize=5000
    com.solarmetric.kodo.DataCacheClass=com.ewarna.pdm.sessions.PDMCache
    =========== Stack Trace ================================
    Communication link failure: java.io.IOException [code=0;state=08S01]
    NestedThrowables:
    com.solarmetric.kodo.impl.jdbc.sql.SQLExceptionWrapper:
    [SQL=SELECT t0.M_IDX, t3.JDOCLASSX, t3.JDOLOCKX, t3.M_CREATIONDATEX,
    t3.M_DELETEDDATEX, t3.M_HOSTADDRESSX, t3.M_LASTMODIFIEDDATEX,
    t3.M_NAMEX, t3.M_OLDIDX, t3.M_ID_M_OWNERX, t0.M_ID_M_ACCOUNTX,
    t0.M_FULLNAMEX, t0.M_PASSWORDX, t0.M_PASSWORDEXPIRYDATEX, t3.M_NAMEX
    >>>>FROM ABSTRACTENTITYX t2, ABSTRACTENTITYX t3, Accounts t1, Users t0 WHERE>>>>>>>((((((t2.M_NAMEX = 'development' AND t3.M_NAMEX = 'ewarna') AND>>>>(t3.M_DELETEDDATEX IS NULL)) AND (t2.M_DELETEDDATEX IS NULL)) AND>>>>(t3.M_DELETEDDATEX IS NULL)) AND t3.JDOCLASSX =>>>>'com.ewarna.pdm.entities.storage.UserPE') AND t0.M_IDX = t3.M_IDX AND>>>>t0.M_ID_M_ACCOUNTX = t1.M_IDX AND t1.M_IDX = t2.M_IDX) ORDER BY>>>>t3.M_NAMEX ASC
    [PRE=SELECT t0.M_IDX, t3.JDOCLASSX, t3.JDOLOCKX, t3.M_CREATIONDATEX,
    t3.M_DELETEDDATEX, t3.M_HOSTADDRESSX, t3.M_LASTMODIFIEDDATEX,
    t3.M_NAMEX, t3.M_OLDIDX, t3.M_ID_M_OWNERX, t0.M_ID_M_ACCOUNTX,
    t0.M_FULLNAMEX, t0.M_PASSWORDX, t0.M_PASSWORDEXPIRYDATEX, t3.M_NAMEX
    >>>>FROM ABSTRACTENTITYX t2, ABSTRACTENTITYX t3, Accounts t1, Users t0 WHERE>>>>>>>((((((t2.M_NAMEX = ? AND t3.M_NAMEX = ?) AND (t3.M_DELETEDDATEX IS>>>>NULL)) AND (t2.M_DELETEDDATEX IS NULL)) AND (t3.M_DELETEDDATEX IS NULL))>>>>AND t3.JDOCLASSX = ?) AND t0.M_IDX = t3.M_IDX AND t0.M_ID_M_ACCOUNTX =>>>>t1.M_IDX AND t1.M_IDX = t2.M_IDX) ORDER BY t3.M_NAMEX ASC
    Communication link failure: java.io.IOException
         at
    com.solarmetric.kodo.impl.jdbc.runtime.SQLExceptions.throwDataStore(SQLExceptions.java:23)
         at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.executeQuery(JDBCStoreManager.java:742)
         at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCQuery.executeQuery(JDBCQuery.java:92)
         at com.solarmetric.kodo.query.QueryImpl.executeWithMap(QueryImpl.java:792)
         at
    com.ewarna.pdm.sessions.BasicQuery.getByAdvancedFormula(BasicQuery.java:137)
         at
    com.ewarna.pdm.sessions.BasicQuery.getByAdvancedFormula(BasicQuery.java:65)
         at com.ewarna.pdm.sessions.BasicQuery.getByFormula(BasicQuery.java:205)
         at
    com.ewarna.handlers.storage.SessionHandler$1.execute(SessionHandler.java:116)
         at
    com.ewarna.pdm.sessions.JDOCallBackExecutor.execute(JDOCallBackExecutor.java:40)
         at
    com.ewarna.handlers.storage.SessionHandler.login(SessionHandler.java:140)
         at
    com.ewarna.pdm.soap.AbstractSoapService.login(AbstractSoapService.java:44)
         at
    com.ewarna.pdm.soap.xfs.SoapServiceXFSImpl.login(SoapServiceXFSImpl.java:1199)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at org.apache.soap.server.RPCRouter.invoke(RPCRouter.java:146)
         at
    org.apache.soap.providers.RPCJavaProvider.invoke(RPCJavaProvider.java:129)
         at
    org.apache.soap.server.http.RPCRouterServlet.doPost(RPCRouterServlet.java:354)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
         at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
         at
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
         at
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
         at
    org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
         at
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
         at
    org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
         at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
         at
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
         at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
         at
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
         at
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
         at
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
         at
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
         at java.lang.Thread.run(Thread.java:536)
    NestedThrowablesStackTrace:
    java.sql.SQLException: Communication link failure: java.io.IOException
         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1606)
         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:886)
         at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:945)
         at com.mysql.jdbc.Connection.execSQL(Connection.java:1809)
         at
    com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1458)
         at
    com.solarmetric.datasource.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:93)
         at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executePreparedQueryInternal(SQLExecutionManagerImpl.java:769)
         at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executeQueryInternal(SQLExecutionManagerImpl.java:692)
         at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executeQuery(SQLExecutionManagerImpl.java:373)
         at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executeQuery(SQLExecutionManagerImpl.java:357)
         at
    com.solarmetric.kodo.impl.jdbc.ormapping.ClassMapping.selectPrimaryMappings(ClassMapping.java:1221)
         at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.executeQuery(JDBCStoreManager.java:717)
         at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCQuery.executeQuery(JDBCQuery.java:92)
         at com.solarmetric.kodo.query.QueryImpl.executeWithMap(QueryImpl.java:792)
         at
    com.ewarna.pdm.sessions.BasicQuery.getByAdvancedFormula(BasicQuery.java:137)
         at
    com.ewarna.pdm.sessions.BasicQuery.getByAdvancedFormula(BasicQuery.java:65)
         at com.ewarna.pdm.sessions.BasicQuery.getByFormula(BasicQuery.java:205)
         at
    com.ewarna.handlers.storage.SessionHandler$1.execute(SessionHandler.java:116)
         at
    com.ewarna.pdm.sessions.JDOCallBackExecutor.execute(JDOCallBackExecutor.java:40)
         at
    com.ewarna.handlers.storage.SessionHandler.login(SessionHandler.java:140)
         at
    com.ewarna.pdm.soap.AbstractSoapService.login(AbstractSoapService.java:44)
         at
    com.ewarna.pdm.soap.xfs.SoapServiceXFSImpl.login(SoapServiceXFSImpl.java:1199)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at org.apache.soap.server.RPCRouter.invoke(RPCRouter.java:146)
         at
    org.apache.soap.providers.RPCJavaProvider.invoke(RPCJavaProvider.java:129)
         at
    org.apache.soap.server.http.RPCRouterServlet.doPost(RPCRouterServlet.java:354)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
         at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
         at
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
         at
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
         at
    org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
         at
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
         at
    org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
         at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
         at
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
         at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
         at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
         at
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
         at
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
         at
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
         at
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
         at java.lang.Thread.run(Thread.java:536)
    Marc Prud'hommeaux wrote:
    Makas-
    Is Kodo idle during a long-running transaction, or does the error occur
    when a new Connection is allocated? If the former, then there is nothing
    we can do: MySQL shouldn't be dropping an open Connection while a
    transaction is active. If the latter, then the property
    com.solarmetric.kodo.impl.jdbc.ConnectionTestTimeout specified the
    number of seconds between which the connection should be tested for
    valididty when removed from the pool.
    See also:
    http://docs.solarmetric.com/manual.html#com.solarmetric.kodo.impl.jdbc.ConnectionTestTimeout
    If this does not help, can you let us know your properties and some
    details about your application?
    In article <[email protected]>, Makas Tzavellas wrote:
    Hi,
         I'm using kodo 2.4.1 and the latest stable MySQL driver 3.0.6. After
    leaving the application inactive for a few hours, the connection to
    mysql is no longer usable. This did not occur with MySQL version 2.0.14
    (as I believe Kodo weren't reusing the connections).
         Are there any properties that I could set, so Kodo can keep the
    connection active or recover from the problem?
    Makas

  • How does Kodo manage DB connection pools?

    Hi,
    As per the documentation, JDO options MinPool and MaxPool are no longer
    part of the specification. I expect this means the JDO implementation is
    supposed to manage database connection pools appropriately. Now, I would
    like to understand Kodo's approach to this, and whether I have any control
    on pool configuration at all via the deprecated MinPool and MaxPool
    properties -or are these properties simply ignored.
    On a related topic, I am confused about the effects of closing
    PersistenceMangers after every use, from a performance point of view (if
    the connection pool is not managed by Kodo, am I incurring additional
    overhead by not re-using a PersistenceManager?). I have read in different
    places in the documentation that it is good to re-use PersistenceManagers
    as well as the fact that although PersistenceManagers are
    garbage-collected and connection resources freed as a result, it is
    recommended to call close() on them anyway. Bottom line, are there any
    side-effects to religiously asking the PersistenceManagerFactory (I have
    several, one each for the different data sources I use) for a new
    PersistenceManager at the beginning of each method and calling close() in
    a finally{} clause?
    I'm sorry if this has been answered elsewhere - I'd appreciate it if you'd
    just point me to the discussion if so.
    Thanks.
    -Krishna Choppella
    Digital Harbor, Inc.

    would like to understand Kodo's approach to this, and whether I have any
    control on pool configuration at all via the deprecated MinPool and
    MaxPool properties -or are these properties simply ignored.Currently, Kodo uses the MinPool and MaxPool properties to configure the
    JDBC connection pool. Starting with version 3.0, Kodo will use separate
    pooling properties.
    Bottom
    line, are there any side-effects to religiously asking the
    PersistenceManagerFactory (I have several, one each for the different
    data sources I use) for a new PersistenceManager at the beginning of
    each method and calling close() in a finally{} clause?Well, you miss out on the simple object caching employed by PMs. Each PM
    keeps a cache of the objects it manages. Reusing a PM allows it to build
    up a bigger cache, and makes calls to getObjectById and 1-1 relation
    traversals faster.
    Additionally, each cached object maintains state in its persistent fields
    (subject to the RetainValues setting and other settings), so retrieving
    object state can be faster when the object is already cached and has
    already been read.
    However, if you employ Kodo's L2 caching plugin (Performance Pack), then
    you get all these benefits regardless of whether or not you re-use
    individual PMs.

  • Error while configuring kodo to lookup a datasource

    We had a working application using EEPersistenceManagerFactory
    I changed the kodo.properties to lookup a non XA JDBC datasource.
    After that the application is working fine (it creates
    ,updates,deletes,finds record in the DB)
    but SystemOut.log has the following error for every operation
    We are using Kodo 2.5.0, Websphere 5.0 and Oracle 8
    How can we avoid getting this error ?.
    We tried to find any property on the Websphere datasource which can be
    altered to avoid this error but no luck.
    Thanks
    Paresh
    [10/7/03 15:30:45:467 IST] 3d8b2d1a MCWrapper E J2CA0081E: Method
    destroy failed while trying to execute method destroy on ManagedConnection
    com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl@437f6d23 from resource
    <null>. Caught exception: com.ibm.ws.exception.WsException: DSRA0080E: An
    exception was received by the Data Store Adapter. See original exception
    message: Cannot call 'cleanup' on a ManagedConnection while it is still in
    a transaction..
         at
    com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:222)
         at
    com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:172)
         at
    com.ibm.ws.rsadapter.AdapterUtil.createDataStoreAdapterException(AdapterUtil.java:182)
         at
    com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.cleanupTransactions(WSRdbManagedConnectionImpl.java:1826)
         at
    com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.destroy(WSRdbManagedConnectionImpl.java:1389)
         at com.ibm.ejs.j2c.MCWrapper.destroy(MCWrapper.java:1032)
         at
    com.ibm.ejs.j2c.poolmanager.FreePool.returnToFreePool(FreePool.java:259)
         at com.ibm.ejs.j2c.poolmanager.PoolManager.release(PoolManager.java:777)
         at com.ibm.ejs.j2c.MCWrapper.releaseToPoolManager(MCWrapper.java:1304)
         at
    com.ibm.ejs.j2c.ConnectionEventListener.connectionClosed(ConnectionEventListener.java:195)
         at
    com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.processConnectionClosedEvent(WSRdbManagedConnectionImpl.java:843)
         at
    com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.closeWrapper(WSJdbcConnection.java:569)
         at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:132)
         at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.close(SQLExecutionManagerImpl.java:814)
         at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.release(JDBCStoreManager.java(Inlined
    Compiled Code))
         at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.load(JDBCStoreManager.java(Compiled
    Code))
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.loadFields(StateManagerImpl.java(Compiled
    Code))
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.preSerialize(StateManagerImpl.java:784)
         at com.paresh.core.vo.Release.jdoPreSerialize(Release.java)
         at com.paresh.core.vo.Release.writeObject(Release.java)
         at java.lang.reflect.Method.invoke(Native Method)
         at
    com.ibm.rmi.io.IIOPOutputStream.invokeObjectWriter(IIOPOutputStream.java:703)
         at com.ibm.rmi.io.IIOPOutputStream.outputObject(IIOPOutputStream.java:671)
         at
    com.ibm.rmi.io.IIOPOutputStream.simpleWriteObject(IIOPOutputStream.java:146)
         at
    com.ibm.rmi.io.ValueHandlerImpl.writeValueInternal(ValueHandlerImpl.java:217)
         at com.ibm.rmi.io.ValueHandlerImpl.writeValue(ValueHandlerImpl.java:144)
         at com.ibm.rmi.iiop.CDROutputStream.write_value(CDROutputStream.java:1590)
         at com.ibm.rmi.iiop.CDROutputStream.write_value(CDROutputStream.java:1107)
         at
    com.paresh.core.interfaces._EJSRemoteStatelessValidation_da16513c_Tie.findCorrectionAction(_EJSRemoteStatelessValidation_da16513c_Tie.java:309)
         at
    com.paresh.core.interfaces._EJSRemoteStatelessValidation_da16513c_Tie._invoke(_EJSRemoteStatelessValidation_da16513c_Tie.java:104)
         at
    com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:582)
         at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:437)
         at com.ibm.rmi.iiop.ORB.process(ORB.java:320)
         at com.ibm.CORBA.iiop.ORB.process(ORB.java:1544)
         at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2063)
         at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:63)
         at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
         at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:592)
    kodo.properties
    com.solarmetric.kodo.LicenseKey=
    #com.solarmetric.kodo.ee.ManagedRuntimeProperties=TransactionManagerName=java:/TransactionManager
    com.solarmetric.kodo.ee.ManagedRuntimeProperties=TransactionManagerName=TransactionFactory
    TransactionManagerMethod=com.ibm.ejs.jts.jta.TransactionManagerFactory.getTransactionManager
    #com.solarmetric.kodo.ee.ManagedRuntimeClass=com.solarmetric.kodo.ee.InvocationManagedRuntime
    com.solarmetric.kodo.ee.ManagedRuntimeClass=com.solarmetric.kodo.ee.AutomaticManagedRuntime
    #javax.jdo.PersistenceManagerFactoryClass=com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory
    javax.jdo.PersistenceManagerFactoryClass=com.solarmetric.kodo.impl.jdbc.ee.EEPersistenceManagerFactory
    javax.jdo.option.ConnectionFactoryName=ds/kodo/DataSource1
    javax.jdo.option.Optimistic=true
    javax.jdo.option.RetainValues=true
    javax.jdo.option.NontransactionalRead=true
    #com.solarmetric.kodo.DataCacheClass=com.solarmetric.kodo.runtime.datacache.plugins.CacheImpl
    # Changing these to a non-zero value will dramatically increase
    # performance, but will cause in-memory databases such as Hypersonic
    # SQL to never exit when your main() method exits, as the pooled
    # connections in the in-memory database will cause a daemon thread to
    # remain running.
    javax.jdo.option.MinPool=5
    javax.jdo.option.MaxPool=10

    We do have a makeTransientAll() before the object returns from Session
    Bean.
    We also tried the JCA path
    After installing the JCA RAR and doing a lookup for
    PersistenceManagetFactory the same code is not throwing any exception.
    The exception is thrown only if datasource is used.
    Thanks
    Paresh
    Marc Prud'hommeaux wrote:
    Paresh-
    It looks like you are returning a collection of instances from an EJB,
    which will cause them to be serialized. The serialization is happening
    outside the context of a transaction, and Kodo needs to obtain a
    connection. Websphere seems to not like that.
    You have a few options:
    1. Call makeTransientAll() on all the instances before you return them
    from your bean methods
    2. Manually instantiate all the fields yourself before sending them
    back. You could use a bogus ObjectOutputStream to do this.
    3. In 3.0, you can use the new detach() API to detach the instances
    before sending them back to the client.
    In article <[email protected]>, Paresh wrote:
    We had a working application using EEPersistenceManagerFactory
    I changed the kodo.properties to lookup a non XA JDBC datasource.
    After that the application is working fine (it creates
    ,updates,deletes,finds record in the DB)
    but SystemOut.log has the following error for every operation
    We are using Kodo 2.5.0, Websphere 5.0 and Oracle 8
    How can we avoid getting this error ?.
    We tried to find any property on the Websphere datasource which can be
    altered to avoid this error but no luck.
    Thanks
    Paresh
    [10/7/03 15:30:45:467 IST] 3d8b2d1a MCWrapper E J2CA0081E: Method
    destroy failed while trying to execute method destroy on ManagedConnection
    com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl@437f6d23 from resource
    <null>. Caught exception: com.ibm.ws.exception.WsException: DSRA0080E: An
    exception was received by the Data Store Adapter. See original exception
    message: Cannot call 'cleanup' on a ManagedConnection while it is still in
    a transaction..
         at
    com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:222)
         at
    com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:172)
         at
    com.ibm.ws.rsadapter.AdapterUtil.createDataStoreAdapterException(AdapterUtil.java:182)
         at
    com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.cleanupTransactions(WSRdbManagedConnectionImpl.java:1826)
         at
    com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.destroy(WSRdbManagedConnectionImpl.java:1389)
         at com.ibm.ejs.j2c.MCWrapper.destroy(MCWrapper.java:1032)
         at
    com.ibm.ejs.j2c.poolmanager.FreePool.returnToFreePool(FreePool.java:259)
         at com.ibm.ejs.j2c.poolmanager.PoolManager.release(PoolManager.java:777)
         at com.ibm.ejs.j2c.MCWrapper.releaseToPoolManager(MCWrapper.java:1304)
         at
    com.ibm.ejs.j2c.ConnectionEventListener.connectionClosed(ConnectionEventListener.java:195)
         at
    com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.processConnectionClosedEvent(WSRdbManagedConnectionImpl.java:843)
         at
    com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.closeWrapper(WSJdbcConnection.java:569)
         at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:132)
         at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.close(SQLExecutionManagerImpl.java:814)
         at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.release(JDBCStoreManager.java(Inlined
    Compiled Code))
         at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.load(JDBCStoreManager.java(Compiled
    Code))
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.loadFields(StateManagerImpl.java(Compiled
    Code))
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.preSerialize(StateManagerImpl.java:784)
         at com.paresh.core.vo.Release.jdoPreSerialize(Release.java)
         at com.paresh.core.vo.Release.writeObject(Release.java)
         at java.lang.reflect.Method.invoke(Native Method)
         at
    com.ibm.rmi.io.IIOPOutputStream.invokeObjectWriter(IIOPOutputStream.java:703)
         at com.ibm.rmi.io.IIOPOutputStream.outputObject(IIOPOutputStream.java:671)
         at
    com.ibm.rmi.io.IIOPOutputStream.simpleWriteObject(IIOPOutputStream.java:146)
         at
    com.ibm.rmi.io.ValueHandlerImpl.writeValueInternal(ValueHandlerImpl.java:217)
         at com.ibm.rmi.io.ValueHandlerImpl.writeValue(ValueHandlerImpl.java:144)
         at com.ibm.rmi.iiop.CDROutputStream.write_value(CDROutputStream.java:1590)
         at com.ibm.rmi.iiop.CDROutputStream.write_value(CDROutputStream.java:1107)
         at
    com.paresh.core.interfaces._EJSRemoteStatelessValidation_da16513c_Tie.findCorrectionAction(_EJSRemoteStatelessValidation_da16513c_Tie.java:309)
         at
    com.paresh.core.interfaces._EJSRemoteStatelessValidation_da16513c_Tie._invoke(_EJSRemoteStatelessValidation_da16513c_Tie.java:104)
         at
    com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:582)
         at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:437)
         at com.ibm.rmi.iiop.ORB.process(ORB.java:320)
         at com.ibm.CORBA.iiop.ORB.process(ORB.java:1544)
         at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2063)
         at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:63)
         at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
         at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:592)
    kodo.properties
    com.solarmetric.kodo.LicenseKey=
    #com.solarmetric.kodo.ee.ManagedRuntimeProperties=TransactionManagerName=java:/TransactionManager
    >>
    >
    com.solarmetric.kodo.ee.ManagedRuntimeProperties=TransactionManagerName=TransactionFactory
    >>
    >
    TransactionManagerMethod=com.ibm.ejs.jts.jta.TransactionManagerFactory.getTransactionManager
    >>
    >>
    >
    #com.solarmetric.kodo.ee.ManagedRuntimeClass=com.solarmetric.kodo.ee.InvocationManagedRuntime
    >>
    >
    com.solarmetric.kodo.ee.ManagedRuntimeClass=com.solarmetric.kodo.ee.AutomaticManagedRuntime
    >>
    >>
    >
    #javax.jdo.PersistenceManagerFactoryClass=com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory
    >>
    >
    javax.jdo.PersistenceManagerFactoryClass=com.solarmetric.kodo.impl.jdbc.ee.EEPersistenceManagerFactory
    >>
    javax.jdo.option.ConnectionFactoryName=ds/kodo/DataSource1
    javax.jdo.option.Optimistic=true
    javax.jdo.option.RetainValues=true
    javax.jdo.option.NontransactionalRead=true
    #com.solarmetric.kodo.DataCacheClass=com.solarmetric.kodo.runtime.datacache.plugins.CacheImpl
    >>
    >>
    # Changing these to a non-zero value will dramatically increase
    # performance, but will cause in-memory databases such as Hypersonic
    # SQL to never exit when your main() method exits, as the pooled
    # connections in the in-memory database will cause a daemon thread to
    # remain running.
    javax.jdo.option.MinPool=5
    javax.jdo.option.MaxPool=10
    Marc Prud'hommeaux [email protected]
    SolarMetric Inc. http://www.solarmetric.com

Maybe you are looking for

  • Bug: when fetching arrays of rows with null data values

    Using Oracle ODBC Driver 8.01.73.00 or 8.01.74.00 (called 8.1.7.3.0 and 8.1.7.4.0 on the Oracle downloads page). When fetching multiple rows, and where some of the data is null, the the indicator variable quite often (but not always) has incorrect va

  • Anyone having problems with their iPad 2 after updating to OS8

    OS 8 doesn't seem to be fully compatible with iPad 2. Startup is really slow and some apps are not working correctly.

  • Download to Excel with Images

    Hello The download to excel and PDF documents now includes images.  I have inlcuded images in my web templates to execute commands eg: Download to Excel, Bookmake etc. See below: img onclick="executeJS_EXPORT_XSLT120();" alt="Download to Excel" src="

  • Multiplexing Redo Log Files question

    If you are running RAC on ASM on a RAID system, is this required?  We are using an HP autoraid which mirrors at the block level and in the documentation about Multiplexing Redo Log Files it says that you do it to protect against media failure.  The a

  • Ituens keep installing already installed apps and youtube problem

    well my itunes keep installing apps, i already have on my ipod,and than when it is finishing installing it has error messges like it it already installed on ipod, how do i fix this? And when i go to youtube i have this messege you must first connect