Hi,
i am trying to get my first EJB3 JPA up and running and finding it a bit difficult. I am using Sun
Java Application Server to deploy my beans.
Following is my entity POJO class.
package sample.entity.account;
import java.io.Serializable;
//import javax.persistence.AccessType;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.NamedQuery;
import javax.persistence.PreUpdate;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.PostUpdate;
import javax.persistence.PostLoad;
import javax.persistence.Version;
@Entity //(access = AccessType.FIELD)
@Table (name="Account")
@EntityListeners(MyListener.class)
@NamedQuery(name="findThem", query="SELECT a FROM ACCOUNT a")
public class Account implements Serializable
{
@Id
public int accountNumber;
public
String ownerName;
public int balance;
@Version
public int version;
public Account()
{
accountNumber = (int) System.nanoTime();
}
public String toString()
{
return "Acc# "+accountNumber+" , ownerName= "+ownerName+", balance="+balance+"$";
}
@PrePersist
public void prePersist()
{
System.out.println("prePersist()");
}
@PreUpdate
public void preUpdate()
{
System.out.println("preUpdate()");
}
@PostUpdate
public void postUpdate()
{
System.out.println("postUpdate()");
}
@PostLoad
public void postLoad()
{
System.out.println("postLoad()");
}
}
I am trying to access this entity class from a session bean called Bank.
Following is my sun-ejb-jar.xml;
<?xml version="1.0" encoding="UTF-8"?>
<sun-ejb-jar>
<enterprise-beans>
<name>AccountBean</name>
<
ejb>
<ejb-name>BankBean</ejb-name>
<jndi-name>Bank</jndi-name>
</ejb>
<ejb>
<ejb-name>Account</ejb-name>
<jndi-name>Account</jndi-name>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
Following is my sun-cmp-mappings.xml.
<?xml version="1.0" encoding="UTF-8"?>
<sun-cmp-mappings>
<sun-cmp-mapping>
<schema>olga_twe48_lease</schema>
<entity-mapping>
<ejb-name>Account</ejb-name>
<table-name>Account</table-name>
<cmp-field-mapping>
<field-name>accountNumber</field-name>
<column-name>Account.AccountNumber</column-name>
</cmp-field-mapping>
<cmp-field-mapping>
<field-name>ownerName</field-name>
<column-name>Account.OwnerName</column-name>
</cmp-field-mapping>
<cmp-field-mapping>
<field-name>balance</field-name>
<column-name>Account.Balance</column-name>
</cmp-field-mapping>
</entity-mapping>
</sun-cmp-mapping>
</sun-cmp-mappings>
Follwing is my persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<persistence-unit name="persistence_sample">
<provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
<jta-data-source>TweDS</jta-data-source>
</persistence-unit>
</persistence>
When i try to deploy the jar file i get the following error:
Caused by: java.lang.IllegalArgumentException: Referencing error: This bundle has no bean of name [AccountBean]
at com.sun.enterprise.deployment.EjbBundleDescriptor.getEjbByName(EjbBundleDescriptor.java:258)
at com.sun.enterprise.deployment.node.runtime.EjbNode.setElementValue(EjbNode.java:128)
at com.sun.enterprise.deployment.node.SaxParserHandler.endElement(SaxParserHandler.java:408)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:279)
at com.sun.enterprise.deployment.archivist.Archivist.readRuntimeDeploymentDescriptor(Archivist.java:514)
at com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:773)
at com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:731)
at com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:327)
If anyone of guys have any idea about the error please let me know.
Thanks in Advance,
Balaji
[ August 15, 2006: Message edited by: Bear Bibeault ]