jUDDI
  1. jUDDI
  2. JUDDI-517

Externalising Persistence Properties

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.0.4
    • Fix Version/s: 3.1.2
    • Component/s: core
    • Labels:
    • Environment:
      Websphere App Server 7 and DB2 DB

      Description

      Properties of Persistence xml needs to be externalized.

      Changes with need to be done
      1) org.apache.juddi.config.Property.java
      public final static String PERSISTENCE_PROVIDER ="persistenceProvider";
      public final static String DATASOURCE ="hibernate.connection.datasource";
      public final static String HBM_DDL_AUTO ="hibernate.hbm2ddl.auto";
      public final static String DEFAULT_SCHEMA ="hibernate.default_schema";
      public final static String HIBERNATE_DIALECT ="hibernate.dialect";

      2) org.apache.juddi.config.AppConfig.java

      private void loadConfiguration() throws ConfigurationException
      {
      ....
      if(propConfig.getString(Property.PERSISTENCE_PROVIDER).equalsIgnoreCase("Hibernate"))

      { properties = new HashMap<String, String>(); properties.put("hibernate.connection.datasource",propConfig.getString(Property.DATASOURCE)); properties.put("hibernate.hbm2ddl.auto",propConfig.getString(Property.HBM_DDL_AUTO)); properties.put("hibernate.default_schema",propConfig.getString(Property.DEFAULT_SCHEMA)); properties.put("hibernate.dialect",propConfig.getString(Property.HIBERNATE_DIALECT)); }

      ....
      }

      3) org.apache.juddi.config. PersistenceManager.java

      protected static void initializeEntityManagerFactory(String persistenceUnitName,Map<String, String> properties) {
      try {
      if (emf == null ){
      if(properties != null)

      { emf = Persistence.createEntityManagerFactory(persistenceUnitName,properties); }

      else

      { emf = Persistence.createEntityManagerFactory(persistenceUnitName); }

      }

      }
      }

        Activity

        Kurt T Stam made changes -
        Status Reopened [ 4 ] Closed [ 6 ]
        Resolution Fixed [ 1 ]
        Hide
        Kurt T Stam added a comment -

        Added documentation to the database setup chapter

        Show
        Kurt T Stam added a comment - Added documentation to the database setup chapter
        Kurt T Stam made changes -
        Fix Version/s 3.1.1 [ 12315125 ]
        Kurt T Stam made changes -
        Fix Version/s 3.1.2 [ 12317144 ]
        Kurt T Stam made changes -
        Resolution Fixed [ 1 ]
        Status Closed [ 6 ] Reopened [ 4 ]
        Hide
        Kurt T Stam added a comment -

        OK, yeah we will have to add that to the documentation. I will reopen this jira, so we can do that for 3.1.2.

        Show
        Kurt T Stam added a comment - OK, yeah we will have to add that to the documentation. I will reopen this jira, so we can do that for 3.1.2.
        Hide
        Ashley added a comment -

        Hi Kurt,
        Thanks alot for the update.

        I did miss out on this Juddiv3.properties changes.Sorry for the same.

        -------------------Juddiv3.properties---------------------------------------------------------------------------------------------

        persistenceProvider=Hibernate
        hibernate.connection.datasource=java:/jdbc/JuddiDS (in case datasource name needs to be changed)
        hibernate.hbm2ddl.auto=update
        hibernate.default_schema=JuddiSchema (in case Schema name needs to be changed)
        hibernate.dialect=org.hibernate.dialect.DB2Dialect (in case DB is different )
        ---------------------------------------------------------------------------------------------------------------------------------------------------

        Show
        Ashley added a comment - Hi Kurt, Thanks alot for the update. I did miss out on this Juddiv3.properties changes.Sorry for the same. ------------------- Juddiv3.properties --------------------------------------------------------------------------------------------- persistenceProvider=Hibernate hibernate.connection.datasource=java:/jdbc/JuddiDS (in case datasource name needs to be changed) hibernate.hbm2ddl.auto=update hibernate.default_schema=JuddiSchema (in case Schema name needs to be changed) hibernate.dialect=org.hibernate.dialect.DB2Dialect (in case DB is different ) ---------------------------------------------------------------------------------------------------------------------------------------------------
        Kurt T Stam made changes -
        Status Reopened [ 4 ] Closed [ 6 ]
        Resolution Fixed [ 1 ]
        Hide
        Kurt T Stam added a comment -

        More or less followed the code changes proposed. Should work now.

        Show
        Kurt T Stam added a comment - More or less followed the code changes proposed. Should work now.
        Kurt T Stam made changes -
        Fix Version/s 3.1.1 [ 12315125 ]
        Fix Version/s 3.1.2 [ 12317144 ]
        Kurt T Stam made changes -
        Fix Version/s 3.1.2 [ 12317144 ]
        Hide
        Kurt T Stam added a comment -

        OK that seems like a good addition.

        Show
        Kurt T Stam added a comment - OK that seems like a good addition.
        Hide
        Ashley added a comment -

        Hi Kurt,

        Sorry for the late reply, juddi properties is externalized ie. if you give the path of juddi.properties in the JVM args, juddi.properties will not be picked up from the WAR.

        following is a code snippet from appconfig.java
        private void loadConfiguration() throws ConfigurationException
        {
        //Properties from system properties
        CompositeConfiguration compositeConfig = new CompositeConfiguration();
        compositeConfig.addConfiguration(new SystemConfiguration());
        //Properties from file
        PropertiesConfiguration propConfig = null;
        final String filename = System.getProperty("juddi.propertiesFile");
        if (filename != null)

        { propConfig = new PropertiesConfiguration(filename); }

        else

        { propConfig = new PropertiesConfiguration(JUDDI_PROPERTIES); }
        Show
        Ashley added a comment - Hi Kurt, Sorry for the late reply, juddi properties is externalized ie. if you give the path of juddi.properties in the JVM args, juddi.properties will not be picked up from the WAR. following is a code snippet from appconfig.java private void loadConfiguration() throws ConfigurationException { //Properties from system properties CompositeConfiguration compositeConfig = new CompositeConfiguration(); compositeConfig.addConfiguration(new SystemConfiguration()); //Properties from file PropertiesConfiguration propConfig = null; final String filename = System.getProperty("juddi.propertiesFile"); if (filename != null) { propConfig = new PropertiesConfiguration(filename); } else { propConfig = new PropertiesConfiguration(JUDDI_PROPERTIES); }
        Hide
        Kurt T Stam added a comment -

        OK I understand your request, but the juddi properties are in the war as well. So how is it different from setting these properties in the peristence.xml?

        --Kurt

        Show
        Kurt T Stam added a comment - OK I understand your request, but the juddi properties are in the war as well. So how is it different from setting these properties in the peristence.xml? --Kurt
        Ashley made changes -
        Resolution Not A Problem [ 8 ]
        Status Closed [ 6 ] Reopened [ 4 ]
        Hide
        Ashley added a comment -

        Yes Kurt i am aware that these properties can be set in persistence.xml...had mentioned that in the problem description before.

        The problem is persistence.xml is part of the WAR.A WAR is a deliverable which should typically not be modified after delivery, at client location.
        Properties like datasource name etc should be modifiable after delivery by the client.
        EntityManager has two constructors, JUDDI is using the single parameter one, requesting you to use the two parameter one, which also takes persistence properties as an argument.

        Show
        Ashley added a comment - Yes Kurt i am aware that these properties can be set in persistence.xml...had mentioned that in the problem description before. The problem is persistence.xml is part of the WAR.A WAR is a deliverable which should typically not be modified after delivery, at client location. Properties like datasource name etc should be modifiable after delivery by the client. EntityManager has two constructors, JUDDI is using the single parameter one, requesting you to use the two parameter one, which also takes persistence properties as an argument.
        Kurt T Stam made changes -
        Field Original Value New Value
        Status Open [ 1 ] Closed [ 6 ]
        Resolution Not A Problem [ 8 ]
        Hide
        Kurt T Stam added a comment -

        Hi Ashley,

        These properties can be set in the persistence.xml. I hope this covers your needs. Please reopen if it does not.

        Cheers,

        --Kurt

        Show
        Kurt T Stam added a comment - Hi Ashley, These properties can be set in the persistence.xml. I hope this covers your needs. Please reopen if it does not. Cheers, --Kurt
        Ashley created issue -

          People

          • Assignee:
            Kurt T Stam
            Reporter:
            Ashley
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development