Liferay portlet or standalone app loads/overrides external spring configuration file of a jar

Modularization is really important. Since this is my first time to develop a portlet, For this portlet, I changed design several times because of performance. The last time, I changed it because of modularization. There're three projects which target one goal. Previously, I connect database separately, mybatis scatters in those projects. 

In the new design, I have a persistence project. It'll be a jar in the near future. I just add dependency in those projects' pom.xml, one thing I need to do in those projects is to load spring config.xml in the jar.

In my case, two projects are web projects, it's good to get datasource from tomcat/conf/context.xml since many portlets will use the same datasource. But I have a standalone project, I can't get the datasource from tomcat, I have two ways to do that: one is to change datasource in config.xml in jar; the other is to override jar's configuration. Obviously, the second one is better. 

Let me show you some code:


Persistence-Context.xml in jar file

<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/sqlserver/liferay"/>

tomcat/conf/context.xml

<Resource name="jdbc/sqlserver/liferay" 
        auth="Container" 
        type="javax.sql.DataSource"
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
        url="jdbc:sqlserver://IP:Port;databaseName=mydatabasename"
        username="***" 
        password="***"
        maxActive="20" 
 />

How to load the config file in our portlet, it's very easy.  In our own config.xml, we import the Persistence-Context.xml as a resource, like this:
myportletcontext.xml

<import resource="classpath*:Persistence-Context.xml"></import>
Then, in your portlet, we can use all beans in the jar. It's very convenient.
Finally, in our standalone project, how can I override the datasource, it's very easy. Just define a bean with the same name like this:

<bean id="myDataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
		<property name="url" value="jdbc:sqlserver://IP:PORT;databaseName=mydatabasename" />
		<property name="username" value="***" />
		<property name="password" value="***" />
</bean>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值