我最近在玩基于 Java 的 Web 应用程序。这是一个我很长一段时间都想不通的障碍。希望有人能给一些提示。
就我而言,我使用了两个 xml 文件进行预配置。一种是数据库资源的详细信息,包括 URL、用户名、密码等,另一种是稍后 DOM 的简单选择选项。我想使用 xml 文件进行预配置的目的是使我的程序尽可能动态。因此,我的一个数据库中的任何更新,我都可以只更改两个 xml 文件而不是源代码。
为了实现这一点,我需要根据用户的选择动态分配数据库资源。我个人的想法是通过 Controller 或 Servlet 类中的以下过程来实现这个目标:
// get user's selected option from request, create Input object
String userSelection = request.getParameter("title");
Input userInput = new Input(userSelection);
// open user selection options xml inside Input class
Document doc = dBuilder.parse(xmlFile);
// get matched option and set database name inside Input class
if(userSelectoin.equals(doc.getElementByTagName("desiredTitle"))
{
userInput.setDB(doc.getElementByTagName("dbname");
}
// use resource injection to get all details of corresponding database in database xml
@Resource(name=userInput.getDB())
public void doConnection()
{
DataSource myDB;
Connection myConn = myDB.getConnection();
}
障碍在于第四道工序。对于资源注入,其名称需要常量字符串,例如@Resource(name="myDB1")
. 然而,权衡是它可能会使程序根本不动态。我的查询将是如何在 java 中设置和获取最终字符串,或者是否有任何其他可能的解决方案来实现我的目标?
来自 Eclipse 的错误消息是“注释属性 Resource.name 的值必须是常量表达式”。