10

My development environment (IBM RAD 8 + WAS 8) is complaining that my project does not have a persistence.xml file. Still it seems that I can build and run my project. Is that file required and if a add one such file to make my project pass validation, what should be in that file?

The project is a web project that uses session beans and entity beans from other projects and this persistence.xml error is the only error in the project so I'd be glad to get rid of it.

Thanks for any help

Update

I searched my files for persistence.xml and it showed up in src/ and bin/ of the EJB project while the web project with servlets and jsp does not have a persistence.xml, according to my colleague the web project is using the persistence.xml from the EJB project i.e:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

    <persistence-unit name="PandoraArendeWeb" transaction-type="JTA">

        <jta-data-source>jdbc/Mainframe_TEST_ADBUTV2</jta-data-source>
        <class>se.prv.pandora.arendeprocess.entity.PRVNummer</class>
        <class>se.prv.pandora.arendeprocess.entity.Ansokan</class>
        <class>se.prv.pandora.arendeprocess.entity.NatAnsokan</class>
        <class>se.prv.pandora.arendeprocess.entity.PctAnsokan</class>
        <class>se.prv.pandora.arendeprocess.entity.ArendePerson</class>
        <class>se.prv.pandora.arendeprocess.entity.Nyregistrering</class>
        <class>se.prv.pandora.arendeprocess.entity.Anstalld</class>
        <class>se.prv.pandora.arendeprocess.entity.Handlaggare</class>
        <class>se.prv.pandora.arendeprocess.entity.OrgElement</class>
        <class>se.prv.pandora.arendeprocess.entity.FysiskHandlaggare</class>
        <class>se.prv.pandora.arendeprocess.entity.AnsvarigHandlaggare</class>
        <class>se.prv.pandora.arendeprocess.entity.AnsvarigFysiskHandlaggare</class>
        <class>se.prv.pandora.arendeprocess.entity.TeknikOmrade</class>
        <class>se.prv.pandora.arendeprocess.entity.Person</class>
        <class>se.prv.pandora.arendeprocess.entity.PRVNummerPerson</class>
        <class>se.prv.pandora.arendeprocess.entity.Notering</class>
        <class>se.prv.pandora.arendeprocess.entity.Lock</class>
        <class>se.prv.pandora.arendeprocess.entity.LandKod</class>
        <class>se.prv.pandora.arendeprocess.entity.ArbetsMomentLog</class>
        <class>se.prv.pandora.arendeprocess.entity.SystemTypDel</class>
        <class>se.prv.pandora.arendeprocess.entity.ArbetsMoment</class>
        <class>se.prv.pandora.arendeprocess.entity.UnderStatus</class>
        <class>se.prv.pandora.arendeprocess.entity.PatPers</class>
        <class>se.prv.pandora.arendeprocess.entity.PrvLandP</class>
        <class>se.prv.pandora.arendeprocess.entity.PkaPerln</class>
        <class>se.prv.pandora.arendeprocess.entity.PctnPerl</class>
        <class>se.prv.pandora.arendeprocess.entity.PersonToPatPersKoppl</class>
        <class>se.prv.pandora.arendeprocess.entity.PRVNummerPersonKoppl</class>
        <class>se.prv.pandora.arendeprocess.entity.Region</class>
        <class>se.prv.pandora.arendeprocess.entity.Historik</class>
        <class>se.prv.pandora.arendeprocess.entity.Egenskap</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>

    </persistence-unit>

<!-- <persistence-unit name="PandoraArendeWeb_MSSQL" transaction-type="JTA">

        <jta-data-source>jdbc/MSSQL_TEST_XA</jta-data-source>
        <class>se.prv.pandora.arendeprocess.entity.PersonSearch</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>

    </persistence-unit>
 -->    
</persistence>

enter image description here

pnuts
  • 58,317
  • 11
  • 87
  • 139
Niklas Rosencrantz
  • 25,640
  • 75
  • 229
  • 424
  • 1
    I hope your persistence.xml is in WEB-INF/classes/META-INF/persistence.xml. – Seshagiri May 23 '12 at 07:20
  • @Seshagirl thank you for the comment. Actually I found two persistence.xml in src/ and /bin in the EJB project while this project is the web project. My colleague who has been working on this said we should use this setup with no persistence.xml in the web project since the file is already in the EJB project. I now include the persistence.xml in the original question so that you can see better what is going on. – Niklas Rosencrantz May 23 '12 at 07:47

3 Answers3

10

persistence.xml files usually contain details related to your database, such as connection strings and their respective user names and passwords including other ORM related information. These details can be placed in other locations so you need not explicitly have one, although having such a file usually makes all persistence related information available in one place which makes looking up certain settings and configurations easier.

This is a sample persistence.xml file:

<?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"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="<PERSISTENCE UNIT NAME>">
        <properties>
            <!--
            <property name="hibernate.ejb.cfgfile" value="/hibernate.cfg.xml"/>
            <property name="hibernate.hbm2ddl.auto" value="create"/>
            -->
            <property name="hibernate.archive.autodetection" value="class, hbm"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.password" value="<PASSWORD>"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://<HOST IP ADDRESS>/<DB NAME>"/>
            <property name="hibernate.connection.username" value="<USERNAME>"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
            <property name="hibernate.c3p0.min_size" value="5"/>
            <property name="hibernate.c3p0.max_size" value="20"/>
            <property name="hibernate.c3p0.timeout" value="300"/>
            <property name="hibernate.c3p0.max_statements" value="50"/>
            <property name="hibernate.c3p0.idle_test_period" value="3000"/>
        </properties>
    </persistence-unit>
</persistence>

The above content was taken from here.

gtgaxiola
  • 9,241
  • 5
  • 42
  • 64
npinti
  • 51,780
  • 5
  • 72
  • 96
  • Thanks for the answer. I spoke with my colleague who knew more about the project and he says we have no persistence.xml because that file is in the EJB project that this web project in its turn is using. So what I'm looking for now is some setting of RAD / Eclipse that can tell my environment that I have only one persistence.xml file for two projects in my IDE. (We don't use hibernate). I'll update the question with the actual file now. – Niklas Rosencrantz May 23 '12 at 07:28
  • 1
    @NickRosencrantz: If I where you I would not mess around with the settings of Eclipse, rather, I would put another `persistance.xml` file wherever Eclipse is expecting it an in it I would put a note on where to find the settings. – npinti May 23 '12 at 07:29
  • Many thanks for the investigation. It turns out that my persistence.xml is part of the EJB project and no such file is part of the web project, which is the project I've been referring to, and together the form the EAR archive so my EAR archive does have a persistence.xml I now just wonder what the proper way to set this up is so that my IDE won't report this as an error. Should the web project and EJB project have the same version of the same file? – Niklas Rosencrantz May 23 '12 at 07:54
  • 1
    @NickRosencrantz: You could do that, but you will have to reflect the changes in both which could be problematic if it slips up your mind. Again, if I where you I would have 1 file (in this case) with the actual settings and any other files will just contain the location of the actual file. – npinti May 23 '12 at 07:57
0
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="AINS" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

        <class>com.tridenthyundai.ains.domainobject.AccessoriesDO</class>
        <class>com.tridenthyundai.ains.domainobject.BranchDO</class>
        <class>com.tridenthyundai.ains.domainobject.ContactDO</class>
        <class>com.tridenthyundai.ains.domainobject.CustomerDO</class>
        <class>com.tridenthyundai.ains.domainobject.FinanceDO</class>
        <class>com.tridenthyundai.ains.domainobject.InsuranceDO</class>
        <class>com.tridenthyundai.ains.domainobject.MessageDO</class>
        <class>com.tridenthyundai.ains.domainobject.NotificationDO</class>
        <class>com.tridenthyundai.ains.domainobject.ProductDO</class>
        <class>com.tridenthyundai.ains.domainobject.ProductPriceDO</class>
        <class>com.tridenthyundai.ains.domainobject.ProductSpecDO</class>
        <class>com.tridenthyundai.ains.domainobject.ProductVariantDO</class>
        <class>com.tridenthyundai.ains.domainobject.PurchaseDO</class>
        <class>com.tridenthyundai.ains.domainobject.ServiceCentreDO</class>
        <class>com.tridenthyundai.ains.domainobject.ServiceDO</class>
        <class>com.tridenthyundai.ains.domainobject.ServiceTypeDO</class>
        <class>com.tridenthyundai.ains.domainobject.UserDO</class>
        <class>com.tridenthyundai.ains.domainobject.VisitorDO</class>


        <!-- shouldn't be valid for java SE per specification, but it works for  EclipseLink ... -->
        <exclude-unlisted-classes>false</exclude-unlisted-classes>

        <!-- For Local Testing -->
        <!-- <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://saptalabs:3306/tridenthyundai" />
            <property name="javax.persistence.jdbc.user" value="adminuser" />
            <property name="javax.persistence.jdbc.password" value="adminuser" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />

            <property name="eclipselink.cache.shared.default" value="false"/>
            <property name="eclipselink.ddl-generation" value="create-tables" />
            <property name="eclipselink.ddl-generation.output-mode" value="database" />
            <property name="eclipselink.logging.level" value="SEVERE" />        
        </properties> -->

        <!-- For Production -->

    </persistence-unit>
</persistence>
SparkAndShine
  • 17,001
  • 22
  • 90
  • 134
mohan
  • 9
0
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="saptalabs" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

        <class>com.sapta.hr.domainobject.UserDO</class>
        <class>com.sapta.hr.domainobject.EmployeeDO</class>
        <class>com.sapta.hr.domainobject.AddressDO</class>
        <class>com.sapta.hr.domainobject.EmpDetailDO</class>
        <class>com.sapta.hr.domainobject.EmpAccDetailDO</class>
        <class>com.sapta.hr.domainobject.ProjectDO</class>
        <class>com.sapta.hr.domainobject.CustomerDO</class>
        <class>com.sapta.hr.domainobject.EmpAssignmentDO</class>
        <class>com.sapta.hr.domainobject.EmpAboutDO</class>
        <class>com.sapta.hr.domainobject.EmpAchievementsDO</class>
        <class>com.sapta.hr.domainobject.EmpEmploymentHistoryDO</class>
        <class>com.sapta.hr.domainobject.EmpSportsDO</class>
        <class>com.sapta.hr.domainobject.EmpCulturalsDO</class>
        <class>com.sapta.hr.domainobject.EmpEducationDO</class>
        <class>com.sapta.hr.domainobject.EmpLanguageKnownDO</class>
        <class>com.sapta.hr.domainobject.EmpReferencesDO</class>
        <class>com.sapta.hr.domainobject.EmpSkillSetDO</class>
        <class>com.sapta.hr.domainobject.EmpFamilyBackgroundDO</class>
        <class>com.sapta.hr.domainobject.AssetDO</class>
        <class>com.sapta.hr.domainobject.AssetTypeDO</class>
        <class>com.sapta.hr.domainobject.EmpCTCDO</class>
        <class>com.sapta.hr.domainobject.ExpenseDO</class>
        <class>com.sapta.hr.domainobject.ExpTypeDO</class>
        <class>com.sapta.hr.domainobject.InvoiceDO</class>
        <class>com.sapta.hr.domainobject.PayrollDO</class>
        <class>com.sapta.hr.domainobject.ProfessionalTaxDO</class>
        <class>com.sapta.hr.domainobject.TDSDO</class>
        <class>com.sapta.hr.domainobject.VendorDO</class>
        <class>com.sapta.hr.domainobject.BillsDO</class>
        <class>com.sapta.hr.domainobject.EmpLoseOfPayDO</class>

        <!-- shouldn't be valid for java SE per specification, but it works for 
            EclipseLink ... -->
        <exclude-unlisted-classes>false</exclude-unlisted-classes>

        <!-- For Local Testing -->
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/hrportal" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="root" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="eclipselink.cache.shared.default" value="false" />
            <property name="eclipselink.ddl-generation" value="create-tables" />
            <property name="eclipselink.ddl-generation.output-mode"
                value="database" />
            <property name="eclipselink.logging.level" value="SEVERE" />
        </properties>
    </persistence-unit>
</persistence>