Whoa....Enhancement works finally. I gave up the javaagent,fiddled around with the Enhancer Task which all said the same thing .....
[openjpac] 141 INFO [main] openjpa.MetaData - Found 1 classes with metadata in 0 milliseconds. [openjpac] 141 INFO [main] openjpa.MetaData - The class "test.Scale" listed in the openjpa.MetaDataFactory configuration property could not be loaded; ignoring. i compiled it with the PCEnhancer java class. In Eclipse it is just a click away. One more observation - I now am using the JPA Eclipse Plugin to generate Entity classes and then enhance them. During this process, the enhancer once complained that I cannot use "BigDecimal" as primary key. The enhancement worked after I converted it to "long". Any ideas? Janap wrote: > > I have tried both the combinations Marc. I believe it might be a problem > with my class. I have to post the source 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 > > > Patrick Linskey-2 wrote: >> >> Can you post the source to the Scale class? >> >> -Patrick >> >> On 7/11/07, Janap <[EMAIL PROTECTED]> 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.PersistenceProviderImpl, >>> 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. >>> >>> >> >> >> -- >> Patrick Linskey >> 202 669 5907 >> >> > > -- View this message in context: http://www.nabble.com/Runtime-Enhancement-in-Eclipse-tf4049770.html#a11564182 Sent from the OpenJPA Users mailing list archive at Nabble.com.
