我已经要求为每个客户端提供一个数据库,在完成大部分链接后,我能够取得一些进展。 这就是我实现的方式,根据输入的URL,我们获取公司或客户端信息,并根据我们从tomcat的context.xml文件中获取该特定客户端的数据源信息
对于company1和
<Resource name="company2db" auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="50" maxIdle="30" maxWait="10000" password="orion123" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/company1db" username="root"/>
对于company2,我使用以下代码动态设置数据源
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("company1db");
System.out.println("connection name "+ds.getConnection().toString());
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from user");
while (rs.next())
System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3));
conn.close();
我是否必须为每个服务调用重复相同的步骤,或者是否有办法在登录期间设置一次并使用相同的数据源,直到用户注销或会话到期为止。在我们当前的场景中我们正在使用EntityManager
与数据库进行交互