I have tried both the combinations Marc. I believe it might be a problem with my class. I have to post it tomorrow since I dont carry my work to home :-) The classes are entity classes which I have reverse engineered using the Hibernate Tools plugin for Eclipse. They are EJB 3.0 compatible and work fine with hibernate.
I appreciate the help, best wishes and good night Jan Marc Prud'hommeaux wrote: > > > > I'm doubtful that this will help, but I do notice that your agent > argument looks like: > > -javaagent:...,-scanDevPath=true,directory=...,-tmpClassLoader=false > > Note that the "-" at the beginning of the parameters is probably > causing them to be ignored. I think it needs to look like: > > -javaagent:...,scanDevPath=true,directory=...,tmpClassLoader=false > > > > > On Jul 11, 2007, at 2:27 AM, Janap wrote: > >> >> Thx for the info Craig...got that step working. Didnt have time for >> research >> for the past2 days,but now Im back with another problem. >> >> My web project structure is as follows.. >> >> /build/classes/test/Scale.class >> >> /src/test/Scale.java >> >> /web/WEB-INF/classes/META-INF/persistence.xml >> /web/WEB-INF/classes/META-INF/orm.xml >> >> /web/WEB-INF/lib >> >> Following is my persistence.xml >> >> <persistence xmlns="http://java.sun.com/xml/ns/persistence" >> version="1.0"> >> <persistence-unit name="myPersistence" transaction- >> type="RESOURCE_LOCAL"> >> <provider> >> org.apache.openjpa.persistence.PersistenceProviderImpl >> </provider> >> <mapping-file>orm.xml</mapping-file> >> <class>test.Scale</class> >> <properties> >> <property name="openjpa.ConnectionURL" value="myurl"/> >> <property name="openjpa.ConnectionDriverName" >> value="oracle.jdbc.driver.OracleDriver"/> >> <property name="openjpa.ConnectionUserName" >> value="myuser"/> >> <property name="openjpa.ConnectionPassword" >> value="mypwd"/> >> <property name="openjpa.Log" >> value="DefaultLevel=TRACE,Tool=TRACE"/> >> </properties> >> </persistence-unit> >> </persistence> >> >> >> >> For runtime enhancement is start Tomcat within Eclipse with the >> following VM >> arguments : >> >> -javaagent:C:\Programme\Eclipse\workspace\JPAWebTest\web\WEB-INF\lib >> \openjpa-all-0.9.6-incubating.jar=addDefaultConstructor=false >> ,properties=C:\Programme\Eclipse\workspace\JPAWebTest\web\WEB-INF >> \classes\META-INF\persistence.xml,-scanDevPath=true, >> directory=C:\Programme\Eclipse\workspace\JPAWebTest\build\classes,- >> tmpClassLoader=false >> >> >> My Tomcat starts properly with the following log : >> >> 15 TRACE [main] openjpa.Runtime - Setting the following >> properties from >> "file:/C:/Programme/Eclipse/workspace/JPAWebTest/web/WEB-INF/ >> classes/META-INF/persistence.xml" >> into configuration: {openjpa.ConnectionUserName=myuser, >> openjpa.ConnectionPassword=mypwd, >> openjpa.Log=DefaultLevel=TRACE,Tool=TRACE, >> openjpa.MetaDataFactory=Resources=orm.xml, Types=test.Scale, >> javax.persistence.provider=org.apache.openjpa.persistence.PersistenceP >> roviderImpl, >> openjpa.ConnectionURL=myurl, >> openjpa.ConnectionDriverName=oracle.jdbc.driver.OracleDriver} >> 186 INFO [main] openjpa.MetaData - Found 1 classes with metadata >> in 0 >> milliseconds. >> >> >> Then as I try to run this servlet code : >> >> EntityManagerFactory emf = >> Persistence.createEntityManagerFactory("myPersistence"); >> >> EntityManager em = emf.createEntityManager(); >> em.getTransaction().begin(); >> >> Scale tab = new Scale(5); >> em.persist(tab); >> em.getTransaction().commit(); >> em.close(); >> emf.close(); >> >> I run into an exception which I believe because my class is not >> somehow >> enhanced : >> >> 62 TRACE [http-8090-Processor24] openjpa.MetaData - Using >> metadata factory >> "[EMAIL PROTECTED] >> ". >> 93 INFO [http-8090-Processor24] openjpa.jdbc.JDBC - Using >> dictionary >> class "org.apache.openjpa.jdbc.sql.OracleDictionary". >> 202 INFO [http-8090-Processor24] openjpa.MetaData - Found 1 >> classes with >> metadata in 16 milliseconds. >> 95452 TRACE [http-8090-Processor24] openjpa.Enhance - "test/Scale" >> requires runtime enhancement: true >> 95561 WARN [http-8090-Processor24] openjpa.Enhance - An >> exception was >> thrown while attempting to perform class file transformation on >> "test/Scale": >> java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: >> test.Scale >> at serp.util.Strings.toClass(Strings.java:211) >> at serp.util.Strings.toClass(Strings.java:140) >> at serp.bytecode.BCClass.getType(BCClass.java:565) >> at org.apache.openjpa.enhance.PCEnhancer.<init>(PCEnhancer.java:187) >> at >> org.apache.openjpa.enhance.PCClassFileTransformer.transform >> (PCClassFileTransformer.java:124) >> at sun.instrument.TransformerManager.transform >> (TransformerManager.java:122) >> at >> sun.instrument.InstrumentationImpl.transform >> (InstrumentationImpl.java:155) >> at java.lang.ClassLoader.defineClass1(Native Method) >> at java.lang.ClassLoader.defineClass(ClassLoader.java:620) >> >> >> I tried out different combinations but was not >> successful...probably someone >> could find the flaw.. >> >> best wishes >> Jan >> >> >> >> Hi, >> >> This is from the Java SE 6 documentation. It explains "all": >> Command-Line Interface >> >> On implementations with a command-line interface, an agent is started >> by adding this option to the command-line: >> >> -javaagent:jarpath[=options] >> jarpath is the path to the agent JAR file. options is the agent >> options. This switch may be used multiple times on the same command- >> line, thus creating multiple agents. More than one agent may use the >> same jarpath. An agent JAR file must conform to the JAR file >> specification. >> The manifest of the agent JAR file must contain the attribute Premain- >> Class. The value of this attribute is the name of the agent class. >> The agent class must implement a public static premain method similar >> in principle to the main application entry point. After the Java >> Virtual Machine (JVM) has initialized, each premain method will be >> called in the order the agents were specified, then the real >> application main method will be called. Each premain method must >> return in order for the startup sequence to proceed. >> The premain method has one of two possible signatures. The JVM first >> attempts to invoke the following method on the agent class: >> public static void premain(String agentArgs, Instrumentation inst); >> If the agent class does not implement this method then the JVM will >> attempt to invoke: >> >> public static void premain(String agentArgs); >> The agent class may also have an agentmain method for use when the >> agent is started after VM startup. When the agent is started using a >> command-line option, the agentmain method is not invoked. >> >> The agent class will be loaded by the system class loader (see >> ClassLoader.getSystemClassLoader). This is the class loader which >> typically loads the class containing the application main method. The >> premain methods will be run under the same security and classloader >> rules as the application main method. There are no modeling >> restrictions on what the agent premain method may do. Anything >> application main can do, including creating threads, is legal from >> premain. >> >> Each agent is passed its agent options via the agentArgs parameter. >> The agent options are passed as a single string, any additional >> parsing should be performed by the agent itself. >> >> If the agent cannot be resolved (for example, because the agent class >> cannot be loaded, or because the agent class does not have an >> appropriate premain method), the JVM will abort. If a premain method >> throws an uncaught exception, the JVM will abort. >> >> >> >> Craig >> >> >> >> -- >> View this message in context: http://www.nabble.com/Runtime- >> Enhancement-in-Eclipse-tf4049770.html#a11537016 >> Sent from the OpenJPA Users mailing list archive at Nabble.com. >> > > > -- View this message in context: http://www.nabble.com/Runtime-Enhancement-in-Eclipse-tf4049770.html#a11547982 Sent from the OpenJPA Users mailing list archive at Nabble.com.
