Acessar método de um bean de outra aplicação - JSF

Galera, é o seguinte, primeira vez que uso JSF em uma aplicação e estou com uma dúvida:
eu tenho duas aplicações jsf que se integram, em um determinado momento eu preciso chamar um bean da segunda aplicação a partir da primeira, via url ow oq quer que seja, então eu fiz um link da seguinte maneira:

<h:outputLink value="http://localhost:8080/contexto/view/jsp/pagina.jsf">[ Link ]</h:outputLink><br/>

só que dessa maneira ele não passa no método do bean que seta as informações iniciais para carregar a “pagina.jsf”.

Alguém sabe como posso fazer isso?

obrigado.

foxpv,

Sua dúvida ficou um pouco confusa, vamos ver se entendi:

Em um menu por exemplo, como chamar uma pagina.jsf instancializando a classe que carrega os dados ? (set os atributos).

Exemplo:

LINK:

<h:commandLink action="#{noticiasC.novaNoticia}" value="Cadastrar Noticia" />

Na classe noticiasC (controller) :

public String novaNoticia(){ this.noticia = new Noticias(); return "nova"; }

e a classe Noticias:

[code] public class Noticias {

private Integer noticiaID;

private String titulo;

private String corpo;

private Date data = new Date();

.... getters e setters

}[/code]

Perceba que ao clicar no link, é instancializada a classe Noticias com um retorno “nova” (quem faz isso é a classe controller) …
Com isso voce faz a regra de navegacao no faces-config.xml assim:

<navigation-rule> <from-view-id>/index.jsp</from-view-id> <navigation-case> <from-outcome>nova</from-outcome> <to-view-id>/cadastro.jsp</to-view-id> </navigation-case> </navigation-rule>

Sacou ??

Nesse exemplo que dei, quando clica no Link “cadastrar noticias” ele instancializa a classe Noticias e cai na pagina de cadastro onde eu simplesmente posso jogar valores nos atributos assim:

<h:inputText required="true" id="titulo" value="#{noticiasC.noticia.titulo}" size="60" /> // Sempre acesso ou seto atributos por meio de uma classe controller.. Isso é boa pratica

Entendeu amigo?

Espero ter sido claro.

Att,

Renan

renan_, tudo bem?
entendi perfeitamente o que você disse, isso funciona sim, mas o meu problema eh que esse menu que você citou esta em um aplicação, e o bean que eu desejo chamar esta em outra aplicação, em outro contexto sacou?
daí que vem a dúvida, se eu coloco a url referenciando a página jsf, ele carrega a página blz, mas não passa pelo bean antes, sacou?

[quote=foxpv]renan_, tudo bem?
entendi perfeitamente o que você disse, isso funciona sim, mas o meu problema eh que esse menu que você citou esta em um aplicação, e o bean que eu desejo chamar esta em outra aplicação, em outro contexto sacou?
daí que vem a dúvida, se eu coloco a url referenciando a página jsf, ele carrega a página blz, mas não passa pelo bean antes, sacou?[/quote]

Como assim nao passa pelo bean antes ??
O menu tem um action que instancia o bean, correto? Noticias noticia = new Noticias();

Com a regra de navegacao, voce vai para pagina.jsf e lá acessa os dados do bean assim: #{noticiaController.noticia.atributo} (por exemplo) . Entendido?

Já que o bean Noticia está em outra aplicacao, entao no controller(noticiacontroller.java) (esse faz parte de sua aplicacao/contexto) voce importa os pacotes necessarios, e voce tem um atributo do tipo noticia lá. Entendeu ??
Entao uma noticia (carregada de um bean de outra aplicacao) faz parte do seu contexto. Voce pode acessar os seus atributos normalmente pelo controller #{noticiaController.noticia.atributo}

Bom, nao consegui enxergar muitos problemas se fizer da forma como eu disse.

Se ainda nao fui claro, cole seus codigos aqui para que te indique o que fazer nele, ao inves de exemplos.

Att,

Renan

bixo… mas como eu vou importar uma classe que esta em outro projeto?? tem jeito? q eu saiba soh da pra importar classes ow que estejam explicitamente implementadas dentro do projeto, ow q esta eu algum .jar dentro do mesmo projeto, mas classes de outros projetos tem como importar?

tem sim, crie um jar com os objetos de negocio que as aplicações tem em comun e adicione este jar no classpath das duas aplicações.

toni.arc,
é… desse jeito tem como acessar o bean, mas não era desse jeito q eu estava querendo.
Mas fiz uma “solução provisória” aqui que resolveu o que eu tava precisando ehehehehe

de qualquer maneira, obrigado pela força do renan_ e do toni.arc!

abraços.

[quote=foxpv]toni.arc,
é… desse jeito tem como acessar o bean, mas não era desse jeito q eu estava querendo.
Mas fiz uma “solução provisória” aqui que resolveu o que eu tava precisando ehehehehe

de qualquer maneira, obrigado pela força do renan_ e do toni.arc!

abraços.[/quote]

como vc fez para acessar o bean da outra aplicaçao ? estou com o mesmo problema aqui!

Então cara, eu não lembro o que eu fiz na época, eu era bem iniciante, porém aqui vão algumas dicas:

1 - O JSF 1.2 não possui nenhum suporte a GET, portanto, não é possível acessar um método específico de um bean, através de uma URL. O que eu já fiz (que é uma gambiarra), foi criar um servlet pra tratar essas requisições e esses servlets acessarem os beans desejados. Você pode isolar essa regra de negócio também para não ter que passar pelos bens do JSF, o que seria o mais correto a não ser que você queira ser redirecionado para a própria aplicação onde o bean está.
2 - Se você está usando JSF 2, ele já possui algum suporte nesse sentido, pode dar uma pesquisada que você vai encontrar algo.
3 - Caso você tenha condição de optar e sua aplicação necessitar suportar requisições externas, use um framework action based, vai te poupar muito trabalho.

Bom é isso, espero que tenha ajudado.