私があなたの質問を正しく理解していれば、あなたの問題は、Restlet ベリファイアからデータベースを操作する方法と、Restlet アプリケーション内で make を連携させる方法です。
最善の方法は、データベースの対話ロジックを実装する DAO を定義することです。そんな感じ:
public class SecurityDao {
private DataSource dataSource;
public SecurityDao() {
// Intialize your datasource using DBCP or C3P0
dataSource = new com.mchange.v2.c3p0.ComboPooledDataSource();
dataSource.setDriverClass(MyDriverClass.class);
dataSource.setJdbcUrl("jdbc:mysql://locahost/mydb");
dataSource.setUser("username");
dataSource.setPassword("pwd");
// Don't forget to clean the pool when Restlet application stop
// with ComboPooledDataSource#close method
}
public boolean hasUserPassword(String user, String password) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// Some SQL request like that
ps = conn.prepareStatement("select * from <MYTABLE> where USER = ? and PASSWORD = ?");
ps.setString(1, user);
ps.setString(2, password);
rs = ps.executeQuery();
return rs.next();
} catch(Exception ex) {
(...)
} finally {
// close rs
// close ps
// close conn
}
}
}
これで DAO が実装されました。これを Restlet アプリケーション クラスからインスタンス化し、ベリファイア内に設定します。
public class zeus extends Application {
private SecurityDao securityDao;
public zeus() {
securityDao = new SecurityDao();
}
@Override
public Restlet createInboundRoot() {
(...)
UserVerifier verifier = new UserVerifier();
verifier.setSecurityDao(securityDao);
(...)
return guard;
}
}
以下で説明するように、ベリファイアを少し調整する必要があります。
public class UserVerifier extends SecretVerifier {
private SecurityDao securityDao;
public void setSecurityDao(SecurityDao securityDao) {
this.securityDao = securityDao;
}
public boolean verify(String identifier, char[] secret) {
System.out.println(identifier);
System.out.println(secret);
return securityDao.hasUserPassword(identifier, new String(secret));
return true;
}
}
実際、Restlet アプリケーションの createInboundRoot メソッドがルーティングを初期化します。これは、アプリケーションの起動時、つまり最初のリクエストが完了したときに 1 回行われます。その後、HTTP リクエストが受信されると、Restlet はこのリクエストに含まれるセキュリティ ヒントを使用して検証ツールを自動的に呼び出します。ベリファイアの verify メソッドを明示的に呼び出す必要はありません。Restlet フレームワークがそれを行います...
お役に立てば幸いです、ティエリー