Announcement Announcement Module
Collapse
No announcement yet.
change the value of property at runtime Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • change the value of property at runtime

    My application-datasource.xmls is below my problem is I don't want to provide the user name and password in this
    context file I want to get the username and password at the runtime when user logs in but I don't know how
    to do this.

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schem...-beans-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schem...ng-aop-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

    <tx:annotation-driven />
    <!-- DataSource has been Lazily initialized, set lazy-init to false in production -->

    <bean id="datasource"
    class="com.mchange.v2.c3p0.ComboPooledDataSource" lazy-init="true" destroy-method="close">
    <!-- Tracker created for connection problem: https://sourceforge.net/tracker/?func=detail&aid=3176467&group_id=25357&atid=38369 0-->
    <property name="driverClass" value="com.ibm.as400.access.AS400JDBCDriver" />
    <property name="jdbcUrl" value="${url}" />
    <!--<property name="user" value="${username}" />
    <property name="password" value="${password}" />-->

    <!-- Pool Size Properties follow -->
    <property name="minPoolSize" value="0"/> <!-- Minimum no. of pooled connections -->
    <property name="initialPoolSize" value="1" /> <!-- Initial no. of pooled connections (>minimum)[optional] -->
    <property name="maxPoolSize" value="2"/> <!-- Maximum no. of pooled connections (>minimum) -->
    <property name="acquireIncrement" value="1"/> <!-- Connections to be added every time the need arises -->

    <!-- Connection Establishment Strategy follows -->
    <property name="acquireRetryAttempts" value="5" /> <!-- Retry Attempts on Database connection failure -->
    <property name="acquireRetryDelay" value="1000"/> <!-- Milliseconds between re-tries -->
    <property name="breakAfterAcquireFailure" value="true" /> <!-- Aggressively break DataSource on connection failure -->

    <!-- Prepared Statement pooling -->
    <property name="maxStatements" value="300"/> <!-- Value ~= maxPoolSize * no. of (frequently used)stored procedures -->
    <property name= "maxStatementsPerConnection" value="15" /> <!-- Statement caching per connection for improved performance -->

    <!-- Connection Age related settings -->
    <property name="maxIdleTime" value="300" /> <!-- Seconds for a connection to remain idle before being closed -->
    <property name="unreturnedConnectionTimeout" value="300" /> <!-- Wait for number of seconds for application to release a connection -->

    <property name="idleConnectionTestPeriod" value="30000"/> <!-- Test for idle connections(In milliseconds) -->
    <property name= "autoCommitOnClose" value="true" /> <!-- For ensuring all transactions to commit/rollback on close -->
    <property name="debugUnreturnedConnectionStackTraces" value ="true" />
    <!-- Ignored overrides -->

    <!-- Used for connection testing during startup -->
    <!--property name="testConnectionOnCheckin" value="true" /--> <!-- Test for connection validity asynchronously -->

    <!--property name="initialPoolSize" value="1" /--> <!-- Initial no. of pooled connections (>minimum)[optional] -->
    <!--property name="idleConnectionTestPeriod" value="30000" /> In milliseconds(Overridden) -->
    <!--property name="maxConnectionAge" value="1800" /--> <!-- Life in seconds for any connection(busy/idle) before being deleted -->
    <!--property name="numHelperThreads" value="3" /--> <!-- Perform JDBC operations asynchronously -->

    <bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerE ntityManagerFactoryBean">
    <property name="persistenceUnitName" value="persistence" />
    <property name="persistenceXmlLocation" value="classpathersistence.xml" />
    <property name="dataSource" ref="datasource" />
    <property name="loadTimeWeaver">
    <bean class="org.springframework.instrument.classloading .InstrumentationLoadTimeWeaver" />
    </property>
    <property name="jpaVendorAdapter" ref="vendorAdapter" />
    </bean>

    <bean id="vendorAdapter"
    class="org.springframework.orm.jpa.vendor.Hibernat eJpaVendorAdapter">
    <property name="databasePlatform" value="${dialect}" />
    <property name="showSql" value="${show_sql}" />
    <property name="generateDdl" value="false" />
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionM anager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <bean class="org.springframework.orm.jpa.support.Persist enceAnnotationBeanPostProcessor" />
    <bean class="org.springframework.dao.annotation.Persiste nceExceptionTranslationPostProcessor"/>
    </beans>

  • #2
    Please use [ code][/code ] tags that way your code remains readable!

    Also please use the search as this question has been answered before (I answered it a couple of times). I suggest take a look at the UserCredenentialsDataSourceAdapter (and use the search on the forum for the usage).

    Comment


    • #3
      Ok in future I will use the [ code][/code ].
      And as you suggested I used the UserCredenentialsDataSourceAdapter but it doesn't change the connection object which passed in the entityManagerFactory bean. Since when i try to get the data it gives me the error connection is closed.

      Code:
      <bean id="entityManagerFactory"
      class="org.springframework.orm.jpa.LocalContainerE ntityManagerFactoryBean">
      <property name="persistenceUnitName" value="persistence" />
      <property name="persistenceXmlLocation" value="classpathersistence.xml" />
      <property name="dataSource" ref="datasource" />
      <property name="loadTimeWeaver">
      <bean class="org.springframework.instrument.classloading .InstrumentationLoadTimeWeaver" />
      </property>
      <property name="jpaVendorAdapter" ref="vendorAdapter" />
      </bean>

      Comment


      • #4
        Again I suggest the search. You also need something that sets the current username/password (and clears it afterwards) you can use a Servlet Filter (or if you use spring security extend that) to set the current username/password.

        Comment

        Working...
        X