我们公司的应用程序有一个Web服务。这个应用程序有几个客户端,在每个客户端我们有不同的数据库URL,用户名和密码。每次我需要更改项目并使用maven重新生成.war文件时,我需要为每个客户端的每个凭据设置persistence.xml。
有没有办法在tomcat中设置配置文件来设置此配置?
我的坚持就像这样:
<property name="hibernate.connection.username" value="user1" />
roperty name="hibernate.connection.password" value="pass1" />
<property name="hibernate.connection.url" value="jdbc:mysql://url1"
/>
然后生成.war,我必须再次更改它:
<property name="hibernate.connection.username" value="user2" />
roperty name="hibernate.connection.password" value="pass2" />
<property name="hibernate.connection.url" value="jdbc:mysql://url2"
/>
然后重新产生战争。每个客户一个。
由于某些客户使用外部服务来托管服务,因此无法使用环境变量。
答案 0 :(得分:0)
我找到了自己的答案:
首先,你需要创建setenv.bat(或者如果在linux上的setenv.sh)并创建你的变量(在Windows上):
set _URL=jdbc:mysql://localhost:3306/db
set _USERNAME=root
set _PASSWORD=root
此文件位于tomcat文件夹/ bin中,与startup.bat和shutdown.bat一起。现在,当您启动此服务器时,此变量将可用。
要在Java中使用此变量,您需要在连接类中进行以下操作,如下所示:
Map<String, String> properties = new HashMap<String, String>();
properties.put("javax.persistence.jdbc.url", System.getenv("_URL"));
properties.put("javax.persistence.jdbc.user", System.getenv("_USERNAME"));
properties.put("javax.persistence.jdbc.password", System.getenv("_PASSWORD"));
factory = Persistence.createEntityManagerFactory("project", properties);
希望它可以帮助别人。