6 Replies Latest reply on Jan 25, 2005 3:16 PM by Clebert Suconic

    SPECJAppServer 2002 Driver fails

    Andrew Zhu Newbie

      I can successfully start the Benchmark, but run into a problem when run the driver.

      The error message likes this:

      Apps server is jboss32
      JAVA_HOME is /opt/java1.4
      JAS_HOME is /opt/iexpress/SPECjAppServer2002
      J2EE_HOME is /opt/iexpress/jboss
      Driver Host: hpipvcq
      Binding controller to //hpipvcq.cup.hp.com/Controller
      Controller: Registering O1 on machine
      O1 started ...
      Controller: Registering M1 on machine
      M1 started ...
      Controller: Registering L1 on machine
      L1 started ...
      RunID for this run is : 51
      Output directory for this run is : /opt/iexpress/SPECjAppServer2002/output/51

      Java classpath is: /opt/iexpress/SPECjAppServer2002/jars/driver.jar:/opt/iexpress/jboss/client/jbossall-client.jar;/opt/iexpress/jboss/client/concurrent.jar;/opt/iexpress/jboss/client/log4j.jar;/opt/iexpress/SP
      Exception in thread "main" java.rmi.RemoteException: InitialContext failed. javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang
      .ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
      at org.spec.jappserver.driver.Auditor.getAuditBeans(Auditor.java:95)
      at org.spec.jappserver.driver.Auditor.validateInitialValues(Auditor.java:153)
      at org.spec.jappserver.driver.Driver.configure(Driver.java:278)
      at org.spec.jappserver.driver.Driver.(Driver.java:142)
      at org.spec.jappserver.driver.Driver.main(Driver.java:726)

      The problem looks like the program can not find


      But I add a line
      System.out.println("Java classpath is: " + System.getProperty("java.class.path"));

      in file

      to print out the java classpath and find that "jbossall-client.jar" is in the path already. ( you can see the whole classpath in the above output)

      Did I miss something?



        • 1. Re: SPECJAppServer 2002 Driver fails
          Clebert Suconic Master

          I had this same problem when running the driver into linux.

          It was and wasn't related to classpath.

          At jboss32.env at /config directory you have the Classpath line.

          The default file has ; instead of :

          That makes the driver.sh read some variables wrongly at jboss32.env what make it fail.

          Please let me know how it goes.

          Clebert Suconic

          • 2. Re: SPECJAppServer 2002 Driver fails
            Andrew Zhu Newbie


            After I changed those ; to : and recompiled the package, it works. Thank you.

            I think the original Benchmark developer worked on Windows system, so ';' was used to separate classpath. but on Unix, ':' should be used.

            I run into another problem, does it ring a bell again?

            My test enviorment uses mysql and Jboss 4.0, and here is what I got in server.log:

            2005-01-21 14:15:22,597 ERROR [org.jboss.ejb.plugins.LogInterceptor] TransactionRolledbackLocalException in method: public abstract org.spec.jappserver.util.helper.SequenceBlock org.spec.jappserver.util.sequenc
            eent.ejb.SequenceEntLocal.nextSequenceBlock(), causedBy:
            org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=hpipvcq.cup.hp.com/43, BranchQual=, localId=43] status=STATUS_NO_TRANSACTION; - nested throwable: (javax.
            ejb.EJBException: Expected one updated row but got: 0)
            at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:344)
            at org.jboss.ejb.plugins.TxInterceptorCMT.endTransaction(TxInterceptorCMT.java:457)
            at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:370)
            at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:149)
            at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:128)
            at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
            at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
            at org.jboss.ejb.EntityContainer.internalInvoke(EntityContainer.java:514)
            at org.jboss.ejb.Container.invoke(Container.java:854)
            at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:413)
            at org.jboss.ejb.plugins.local.EntityProxy.invoke(EntityProxy.java:44)
            at $Proxy115.nextSequenceBlock(Unknown Source)
            at org.spec.jappserver.util.sequenceses.ejb.SequenceSesEJB.nextKey(SequenceSesEJB.java:165)

            • 3. Re: SPECJAppServer 2002 Driver fails
              Clebert Suconic Master

              It's funny, because I was running in the same problem. (Coincidence, isn't?)

              I talked to Alexey who was working with Specj2002 here at JBoss, and he told me that this is okay, because this is the sequence generation and the application tries to recover it based on number for tries.

              I wanted to see the code myself before answering you anything, and making sure that this is what was happening:

              At SequenceSesEJB.java (code distributed by Spec.org), you will have a loop of retries.

              so... it's okay!


              • 4. Re: SPECJAppServer 2002 Driver fails
                Clebert Suconic Master

                Have you take a look at www.spec.org lately?

                09/24/2004 The SPECjAppServer2002 expiration date has been extended by three months from the original date of October 27; submissions will now be accepted for review and publication until January 26, 2005.

                Clebert Suconic

                • 5. Re: SPECJAppServer 2002 Driver fails
                  Andrew Zhu Newbie

                  Thank you, Clebert, for looking at this problem.

                  It looks like this java exception is a timing related issue. I found there is 1/3 of chance the exception would not appear when the injection rate is low, e.g 1. But if I increase the injection rate to 10, I run into it everytime.

                  If the application can retry, hope the retry does not affect the final test result.

                  I was aware of the SPECjAppServer2002 expiration date, but I do not think I will submit my testing result to SPEC.


                  • 6. Re: SPECJAppServer 2002 Driver fails
                    Clebert Suconic Master

                    Well... Any other solution would change the result. If for example we set this to pessimistic locking, we would have contentions. I think it would be worse.

                    If you find any other solution, please let me know!