Что вы можете сделать, это «внедрить» bean1 в bean2, чтобы bean2 имел доступ к любому методу, присутствующему в bean1.
Если вы используете Spring, это легко сделать при определении bean-компонентов:
<bean id="bean1" class="foo.bar.Bean1"/>
<bean id="bean2" class="foo.bar.Bean2">
<property id="bean1" ref="bean1"/>
</bean>
и в коде Java bean2:
public class Bean2 {
private Bean1 bean1 = null;
// The setter will be used by Spring to inject Bean1 in Bean2...
public void setBean1(Bean1 bean1) {
this.bean1 = bean1;
}
...
public void someMethod() {
...
// Now, you can call the bean1 instance to update what you want...
bean1.updateSomething();
}
}
Если вы не используете Spring:
Вы можете напрямую получить доступ к экземпляру bean1 в коде bean2, например:
Bean1 bean1 = (Bean1) FacesContext.getCurrentInstance().getCurrentInstance()
.getExternalContext().getSessionMap().get("bean1");