動的エージェントインスタンス


セキュリティチェックの例:
まず、ビジネスクラスを起業して、このビジネスインタフェースを実現します.

public class UserMangerImpl implements UserManager {

	public void addUser(String name, String pws) {
      System.out.println("------------ ()-------------"+name);
	}

	public void deleteUser(Integer id) {
       System.out.println("-------------- ()-------------------");
	}

	public String finUserByid(Integer id) {
		System.out.println("---------------- ()-------------------");
		return null;
	}

プロキシクラスを作成するには

public class SecurityHandler implements InvocationHandler {

	private Object targetObject;  // 
	
	public Object newProxy(Object targetObject){
		this.targetObject=targetObject;
		return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
				                      targetObject.getClass().getInterfaces(),
				                       this);
	}
	
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		chickSecurity();
		Object obj=null;
		try{
			obj=method.invoke(this.targetObject, args);
		}catch(Exception e){
			e.printStackTrace();
		}
		return obj;
	}

	public void chickSecurity(){
		System.out.println("-------- !()----------");
	}

テストクラス

public static void main(String[] args) {
		SecurityHandler hander=new SecurityHandler();
		UserManager user=(UserManager) hander.newProxy(new UserMangerImpl());
		user.addUser("aaaaaaaaa", "vvv");
		user.finUserByid(1);
	}

テスト結果
------安全検査!()----------
----------------追加方法を実行します()-----------------aaaa
------安全検査!()----------
-------------------------------------------------------------------------