最近、JavaベースのWebアプリケーションをプレイしています。これが私が長い間理解できなかった障壁です。誰かがいくつかのヒントを与えることができることを願っています。
私の場合、事前設定に2つのxmlファイルを使用しました。1つは、URL、ユーザー名、パスワードなどを含むデータベースリソースの詳細であり、もう1つは、後でDOMを選択するための簡単なオプションです。事前設定にxmlファイルを使用する目的は、プログラムを可能な限り動的にすることです。したがって、データベースの1つで更新された場合は、ソースコードの代わりに2つの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();
}
障壁は4番目の手順にあります。リソースインジェクションの場合、その名前には。などの定数文字列が必要@Resource(name="myDB1")
です。ただし、トレードオフとして、プログラムがまったく動的にならない可能性があります。私の質問は、Javaで最終的な文字列を設定して取得する方法です。それとも、目標を達成するための他の可能な解決策はありますか?
Eclipseからのエラーメッセージは、「アノテーション属性Resource.nameの値は定数式である必要があります」です。