Сделайте вызов через экземпляр com.sun.proxy

У меня есть программа, которая выполняет поиск в службе именования. Странно то, что иногда поиск возвращает IOR, но иногда он возвращает экземпляр com.sun.proxy (например, com.sun.proxy.$Proxy0@573745ec, который кажется экземпляром).

Точно, код выглядит так:

        Properties p = new Properties();
        p.put(Context.INITIAL_CONTEXT_FACTORY,"some.context.factory");
        p.put(Context.PROVIDER_URL, host+":"+port);
        p.put(Context.URL_PKG_PREFIXES, "some.package.prefixes"); 
        InitialContext ctx = new InitialContext(p);
        String ejbName = "some/lookup/string";

        Object obj = ctx.lookup(ejbName);

затем obj будет экземпляром com.sun.proxy. Как выполнить вызов некоторого метода в найденном EJB?

1 ответ

Вы можете привести прокси к типу, который он проксирует, а затем вызвать методы:

Foo foo = (Foo) obj;
foo.someMethod(...);

Если у вас нет типа, то вы можете использовать Java Reflection, чтобы запросить у прокси его методы, как это было бы с любым обычным экземпляром:

obj.getClass().getMethods();

Смотрите документацию Прокси.

Другие вопросы по тегам