openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Janap <janapure...@gmail.com>
Subject Re: Runtime Enhancement in Eclipse
Date Thu, 12 Jul 2007 09:04:31 GMT

Here is the source code for Scale.java

----------------------------------------------
package test;


import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Scale generated by hbm2java
 */
@Entity
@Table(name="SCALE"
)
public class Scale  implements java.io.Serializable {


     private long nscale;
     private String description;
     private Date dteingabe;

    public Scale() {
    }


    public Scale(long nscale) {
        this.nscale = nscale;
    }
    public Scale(long nscale, String description, Date dteingabe) {
       this.nscale = nscale;
       this.description = description;
       this.dteingabe = dteingabe;
    }

     @Id

    @Column(name="NSCALE", unique=true, nullable=false, precision=10,
scale=0)
    public long getNscale() {
        return this.nscale;
    }

    public void setNscale(long nscale) {
        this.nscale = nscale;
    }

    @Column(name="DESCRIPTION")
    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Temporal(TemporalType.DATE)
    @Column(name="DTEINGABE", length=7)
    public Date getDteingabe() {
        return this.dteingabe;
    }

    public void setDteingabe(Date dteingabe) {
        this.dteingabe = dteingabe;
    }
}


----------------------------------------------




Janap wrote:
> 
> 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
>>> "org.apache.openjpa.persistence.jdbc.PersistenceMappingFactory@1b0bdc8 
>>> ".
>>> 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#a11556149
Sent from the OpenJPA Users mailing list archive at Nabble.com.


Mime
View raw message