Apache CXF + JSF 2 / RichFaces 4 + JBoss AS 6.1
— Client
[code]package ws.client;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class ClientFactory {
Class<T> klass;
public ClientFactory(Class<T> klass){
this.klass = klass;
}
@SuppressWarnings("unchecked")
public T createFactory(String urlService){
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.getInInterceptors().add(new LoggingInInterceptor());
factory.getOutInterceptors().add(new LoggingOutInterceptor());
factory.setServiceClass(klass);
//factory.setUsername(username);
//factory.setPassword(password);
factory.setAddress(urlService);
T client = (T) factory.create();
return client;
}
}[/code]
–Serviço
[code]
package ws.services.validausuario;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import ws.bean.ValidaUsuario;
@WebService
public interface ValidaUsuarioService {
@WebMethod
public ValidaUsuario retornoValidaUsuario(
@WebParam(name = "idParceiro") Long idParceiro,
@WebParam(name = "usuario") String usuario,
@WebParam(name = "senha") String senha,
@WebParam(name = "seguranca") String seguranca
);
}[/code]
–Bean
package ws.bean;
public class ValidaUsuario {
private Integer situacaoRetorno;
private String mensagemRetorno;
private Long idUsuario;
private String nome;
private String docFederal;
public ValidaUsuario() {
}
public ValidaUsuario(Integer tipo, String texto, Long idUsuario,
String nome, String docFederal) {
super();
this.situacaoRetorno = tipo;
this.mensagemRetorno = texto;
this.idUsuario = idUsuario;
this.nome = nome;
this.docFederal = docFederal;
}
Get and Set...[/code]
--Controller
[code]package ws.control;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.faces.bean.ManagedBean;
import ws.bean.ValidaUsuario;
import ws.client.ClientFactory;
import ws.services.validausuario.ValidaUsuarioService;
import ws.util.SecurityData;
@ManagedBean(name = "acessoUsuario")
public class ControllerValidaUsuario {
public ControllerValidaUsuario() {
this.clientFactory = new ClientFactory<ValidaUsuarioService>(ValidaUsuarioService.class);
}
private ClientFactory<ValidaUsuarioService> clientFactory;
private ValidaUsuario usuario;
private ValidaUsuarioService usuarioService;
private Long idParceiro;
private String login;
private String senha;
private String seguranca;
private String urlService;
public String validaAcesso() throws InvalidKeyException, BadPaddingException, NoSuchPaddingException, IllegalBlockSizeException, NoSuchAlgorithmException, InvalidAlgorithmParameterException {
usuarioService = clientFactory.createFactory(urlService);
usuario = usuarioService.retornoValidaUsuario(idParceiro, SecurityData.encrypt(login), SecurityData.encrypt(senha), seguranca);
return "retorno_valida_usuario";
}
public String inicio(){
return "valida_usuario";
}
Get and Set...[/code]
--Pagina
[code]<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<ui:include src="/menu.xhtml"></ui:include>
<f:view>
<h:head></h:head>
<h:body>
<rich:panel header="Valida Usuario Service - Dados Enviados para o Web Service">
<h:form>
<h:panelGrid columns="2">
<h:outputText value="Id Paceiro" />
<h:inputText size="30" id="idParceiro" value="#{acessoUsuario.idParceiro}"></h:inputText>
<h:outputText value="Login" />
<h:inputText size="30" id="login" value="#{acessoUsuario.login}"></h:inputText>
<h:outputText value="Senha" />
<h:inputText size="30" id="senha" value="#{acessoUsuario.senha}"></h:inputText>
<h:outputText value="Segurança ( IP )" />
<h:inputText size="30" id="ip" value="#{acessoUsuario.seguranca}"></h:inputText>
<h:outputText value="End Point ( Sem o ?wsdl )" />
<h:inputText size="30" id="endpoint" value="#{acessoUsuario.urlService}"></h:inputText>
<br />
<br />
<h:commandButton action="#{acessoUsuario.validaAcesso}" value="Realizar Login"/>
<h:outputText value=""/>
</h:panelGrid>
</h:form>
</rich:panel>
</h:body>
</f:view>
</ui:composition>
Foi só pra vc ter um idéia de como dá pra fazer… não sei se é adequado no so seu caso… a estrutura é meio engessada mas quebra o galho…
abraço!