Hi there,
Yes the whole thing is very strange.
I have looked at the database and it has up to 16 rows of completely
duplictated records.
I will go in and adjust my jaws.xml file, I hadn't realised there was no PK
constraint in the default xml.
I have narrowed down the problem to when it happens...how it happens I'm
still not sure.
The test code that I am running creates orders and invoices etc and sends
them to be printed.
This is achieved using webmacro to create HTML and a swing component to
render it for printing.
It seems to be an xwindows permissions problem.
I am running the test from my machine but sending it to another that I don't
have DISPLAY permissions for.
This crashes my test program giving me the errors below.
If I then - after the crash - run findAll() I get the original and correct
figure..BUT...
If I first shut down and restart the app server and then run findAll() I get
the blown out amount.
If I fix the permissions problem (setting DISPLAY and xhost) before I run
then everything is as expected so it is not a problem for me anymore.
I just thought that I should give all the details incase someone wanted to
try reproducing it or someone had a similar problem.
I should also add that this is my first attempt at EJB so I could be missing
something simple...
Thanks for your reply
Lisa.
Here are the client and server stack traces.
error on the client...
Exception in thread "main" java.rmi.ServerException: RemoteException occurred
in server thread; nested exception is:
javax.transaction.TransactionRolledbackException: null; nested
exception is:
java.lang.NoClassDefFoundError
javax.transaction.TransactionRolledbackException: null; nested exception is:
java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError
at
sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:245)
at
sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:220)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122)
at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker_Stub.invoke(Unknown
Source)
at
org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.invoke(StatelessSessionProxy.java:188)
at $Proxy16.printOrds(Unknown Source)
at SystemTester.main(SystemTester.java:284)
and this error on the server...
[OrderCollector] Problem creating javax.swing.plaf.metal.MetalLookAndFeel
with method getUserTextFont and args { :
java.lang.reflect.InvocationTargetException
[OrderCollector] java.lang.Exception: Stack trace
[OrderCollector] at java.lang.Thread.dumpStack(Thread.java:993)
[OrderCollector] at
javax.swing.UIDefaults$ProxyLazyValue.createValue(UIDefaults.java:670)
[OrderCollector] at javax.swing.UIDefaults.get(UIDefaults.java:145)
[OrderCollector] at
javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:46)
[OrderCollector] at
javax.swing.UIDefaults.getFont(UIDefaults.java:223)
[OrderCollector] at javax.swing.UIManager.getFont(UIManager.java:456)
[OrderCollector] at
javax.swing.plaf.basic.BasicTextUI.installDefaults(BasicTextUI.java:207)
[OrderCollector] at
javax.swing.plaf.basic.BasicTextUI.installUI(BasicTextUI.java:561)
[OrderCollector] at javax.swing.JComponent.setUI(JComponent.java:325)
[OrderCollector] at
javax.swing.text.JTextComponent.setUI(JTextComponent.java:583)
[OrderCollector] at
javax.swing.text.JTextComponent.updateUI(JTextComponent.java:593)
[OrderCollector] at
javax.swing.text.JTextComponent.<init>(JTextComponent.java:567)
[OrderCollector] at
javax.swing.JEditorPane.<init>(JEditorPane.java:168)
[OrderCollector] at
javax.swing.JEditorPane.<init>(JEditorPane.java:205)
[OrderCollector] at MyEditor.<init>(HTMLPrinter.java:140)
[OrderCollector] at HTMLPrinter.printHTML(HTMLPrinter.java:63)
[OrderCollector] at HTMLPrinter.printObject(HTMLPrinter.java:42)
[OrderCollector] at
OrderCollectorBean.printOrds(OrderCollectorBean.java:41)
[OrderCollector] at java.lang.reflect.Method.invoke(Native Method)
[OrderCollector] at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:472)
[OrderCollector] at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:87)
[OrderCollector] at
org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:133)
[OrderCollector] at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:263)
[OrderCollector] at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
[OrderCollector] at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:190)
[OrderCollector] at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
[OrderCollector] at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:271)
[OrderCollector] at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:392)
[OrderCollector] at java.lang.reflect.Method.invoke(Native Method)
[OrderCollector] at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:241)
[OrderCollector] at
sun.rmi.transport.Transport$1.run(Transport.java:142)
[OrderCollector] at java.security.AccessController.doPrivileged(Native
Method)
[OrderCollector] at
sun.rmi.transport.Transport.serviceCall(Transport.java:139)
[OrderCollector] at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:443)
[OrderCollector] at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:643)
[OrderCollector] at java.lang.Thread.run(Thread.java:484)
[OrderCollector] ejbStore : Ord3 : OrdBean.getLineItems().size() = 5
[OrderCollector] TRANSACTION ROLLBACK EXCEPTION:null; nested exception is:
java.lang.NoClassDefFoundError
[OrderCollector] java.lang.NoClassDefFoundError
[OrderCollector] at java.lang.Class.forName0(Native Method)
[OrderCollector] at java.lang.Class.forName(Class.java:120)
[OrderCollector] at java.awt.Toolkit$2.run(Toolkit.java:498)
[OrderCollector] at java.security.AccessController.doPrivileged(Native
Method)
[OrderCollector] at
java.awt.Toolkit.getDefaultToolkit(Toolkit.java:489)
[OrderCollector] at java.awt.Toolkit.getEventQueue(Toolkit.java:1115)
[OrderCollector] at
java.awt.EventQueue.isDispatchThread(EventQueue.java:433)
[OrderCollector] at
javax.swing.SwingUtilities.isEventDispatchThread(SwingUtilities.java:1247)
[OrderCollector] at
javax.swing.text.DefaultCaret$UpdateHandler.insertUpdate(DefaultCaret.java:1093)
[OrderCollector] at
javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:179)
[OrderCollector] at
javax.swing.text.DefaultStyledDocument.insert(DefaultStyledDocument.java:201)
[OrderCollector] at
javax.swing.text.html.HTMLDocument.insert(HTMLDocument.java:212)
[OrderCollector] at
javax.swing.text.html.HTMLDocument$HTMLReader.flushBuffer(HTMLDocument.java:3014)
[OrderCollector] at
javax.swing.text.html.HTMLDocument$HTMLReader.addContent(HTMLDocument.java:2956)
[OrderCollector] at
javax.swing.text.html.HTMLDocument$HTMLReader.blockClose(HTMLDocument.java:2899)
[OrderCollector] at
javax.swing.text.html.HTMLDocument$HTMLReader$BlockAction.end(HTMLDocument.java:2141)
[OrderCollector] at
javax.swing.text.html.HTMLDocument$HTMLReader.handleEndTag(HTMLDocument.java:2040)
[OrderCollector] at
javax.swing.text.html.parser.DocumentParser.handleEndTag(DocumentParser.java:220)
[OrderCollector] at
javax.swing.text.html.parser.Parser.parse(Parser.java:2005)
[OrderCollector] at
javax.swing.text.html.parser.DocumentParser.parse(DocumentParser.java:109)
[OrderCollector] at
javax.swing.text.html.parser.ParserDelegator.parse(ParserDelegator.java:74)
[OrderCollector] at
javax.swing.text.html.HTMLEditorKit.read(HTMLEditorKit.java:239)
[OrderCollector] at
javax.swing.JEditorPane.setText(JEditorPane.java:1224)
[OrderCollector] at
javax.swing.JEditorPane.<init>(JEditorPane.java:207)
[OrderCollector] at MyEditor.<init>(HTMLPrinter.java:140)
[OrderCollector] at HTMLPrinter.printHTML(HTMLPrinter.java:63)
[OrderCollector] at HTMLPrinter.printObject(HTMLPrinter.java:42)
[OrderCollector] at
OrderCollectorBean.printOrds(OrderCollectorBean.java:41)
[OrderCollector] at java.lang.reflect.Method.invoke(Native Method)
[OrderCollector] at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:472)
[OrderCollector] at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:87)
[OrderCollector] at
org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:133)
[OrderCollector] at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:263)
[OrderCollector] at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
[OrderCollector] at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:190)
[OrderCollector] at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
[OrderCollector] at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:271)
[OrderCollector] at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:392)
[OrderCollector] at java.lang.reflect.Method.invoke(Native Method)
[OrderCollector] at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:241)
[OrderCollector] at
sun.rmi.transport.Transport$1.run(Transport.java:142)
[OrderCollector] at java.security.AccessController.doPrivileged(Native
Method)
[OrderCollector] at
sun.rmi.transport.Transport.serviceCall(Transport.java:139)
[OrderCollector] at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:443)
[OrderCollector] at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:643)
[OrderCollector] at java.lang.Thread.run(Thread.java:484)
danch wrote:
> Lisa Stuart wrote:
>
> > Hi,
> >
> > I am using JBoss 2.2.1 with CMP beans using hypersonic as the backend
> > (default config).
> > For three weeks, we have been running the same application that creates
> > 9 products (once, after wiping the database and restarting jboss). The
> > primary key is Product.name (String). Yesterday, ProductHome.findAll()
> > started returning 14 products, some having duplicate primary keys.
>
> Very strange indeed!
>
> >
> > This raised three questions.
> > 1. Is there any known issue that would "create" entity beans WITHOUT
> > their home.create() being called (the duplicate products appear some
> > time after they are created).
>
> No known issue, and I haven't seen this happen to anyone else.
>
> > 2. How can findAll() return duplicate primary keys? Shouldn't
> > hypersonic disallow this, or is this a jboss/jaws bug.
>
> This is a JAWS 'feature' - it doens't actually create a primary key
> constraint when it creates tables for CMP beans (by default). Either
> modify standardjaws.xml or create a jaws.xml for your beans setting
> has-pk-constraint to true for default-entity. Then you'll get the
> behavior that most people want. IIRC, this was made non-default because
> some databases choked on the syntax.
>
> > 3. Is there any way to stop this behaviour, it seems pretty serious.
>
> Have you checked the database by hand to see if there are 9 or 14 rows?
> That'd be the place to start. This is on findAll, correct? That just
> does 'select <field list here> from tablename', so there shouldn't be
> any strange SQL things going on where a 'distinct' would help (i.e.
> those extra rows are probably really in the table!) Having the PK
> constraint there should show us where and when it happens (by blowing up
> at the original point of failure.)
>
> -danch
>
> >
> > I have tested the duplicate primary keys to see if they are references
> > to the same objects (==), and they are not.
> >
> > What the hell is going on? Any help would be greatly appreciated.
> >
> > Thanks,
> > Lisa
> > ------------------
> >
> > [lisa@furby Tests]$ java TestProd
> > List of Primary Keys returned by ProductHome.findAll()
> > 0:Basil
> > 1:Alfalfa
> > 2:Delivery
> > 3:Delivery
> > 4:Corriander
> > 5:Licyourass
> > 6:Licyourass
> > 7:Tomatoes
> > 8:Tomatoes
> > 9:Mushies
> > 10:Happles
> > 11:Happles
> > 12:Horanges
> > 13:Horanges
> > ----------------------- TestProd.java ---------------
> > import java.util.Collection;
> > import java.util.Iterator;
> >
> >
> > public class TestProd {
> >
> > public static void main (String[] args) throws Exception {
> >
> > ProductHome ph = (ProductHome)Util.getHome("Product",
> > ProductHome.class);
> > Collection prods = ph.findAll();
> > Iterator i = prods.iterator();
> > int cnt = 0;
> > System.out.println("List of Primary Keys returned by
> > ProductHome.findAll()");
> > Product lp = null;
> > while (i.hasNext()){
> > Product p = (Product)i.next();
> > if ( p == lp ) System.out.println("NEXT PRODUCT is SAME
> > OBJECT AS LAST");
> > System.out.println(cnt + ":" + p.getPrimaryKey());
> > cnt++;
> > lp = p;
> > }
> > }
> > }
> > ----------------- snippet of ejb-jar.xml ----------------
> > <entity>
> > <ejb-name>Product</ejb-name>
> > <home>ProductHome</home>
> > <remote>Product</remote>
> > <ejb-class>ProductBean</ejb-class>
> > <persistence-type>Container</persistence-type>
> > <prim-key-class>java.lang.String</prim-key-class>
> > <reentrant>False</reentrant>
> > <cmp-field><field-name>name</field-name></cmp-field>
> > <cmp-field><field-name>desc</field-name></cmp-field>
> > <cmp-field><field-name>unit</field-name></cmp-field>
> > <cmp-field><field-name>unitCostPrice</field-name></cmp-field>
> > <cmp-field><field-name>qtyOnHand</field-name></cmp-field>
> > <cmp-field><field-name>minQty</field-name></cmp-field>
> > <cmp-field><field-name>catPK</field-name></cmp-field>
> > <primkey-field>name</primkey-field>
> > <ejb-ref>
> > <ejb-ref-name>ejb/Category</ejb-ref-name>
> > <ejb-ref-type>Entity</ejb-ref-type>
> > <home>CategoryHome</home>
> > <remote>Category</remote>
> > <ejb-link>Category</ejb-link>
> > </ejb-ref>
> > </entity>
> >
> >
> >
> > _______________________________________________
> > JBoss-user mailing list
> > [EMAIL PROTECTED]
> > http://lists.sourceforge.net/lists/listinfo/jboss-user
>
> _______________________________________________
> JBoss-user mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/jboss-user
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-user