mplemente componentes compostos JSF para uso compartilha

Trabalho em um projeto Java EE que está planejado para se tornar bastante grande no futuro e quero compartilhar o máximo de código possível. Isso incluía não apenas código Java, mas também código para elementos da interface do usuário. Penso em desenvolver componentes corporativos baseados em assuntos definidos e claros (como administração de usuários, impostos, produtos) que interagem com base em mensagens, beans e assim por diante. Também penso em fornecer a todos esses componentes alguns beans gerenciados e compostos JSF para fornecer algumas funcionalidades básicas para uso posterior na interface da web. Esse é o contexto ...

Para torná-lo concreto: digamos que eu tenho um EAR (um.ear) para gerenciamento de usuários. Dentro dele, tenho algumas entidades JPA para conectividade de banco de dados (jpa.jar) e alguns enterprise beans para a funcionalidade básica, como autenticação (ejb.jar). Além disso, quero colocar outro arquivo jar (jsf.jar) que contenha um LoginController de bean gerenciado para uso com um componente composto (com uma entrada para nome de usuário e senha) login_box.xhtml que desejo colocar posteriormente no front end da web para locais diferentes, dependendo da página real.

The login_box.xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html 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:composite="http://java.sun.com/jsf/composite"
    xmlns:e="http://java.sun.com/jsf/composite/login">
<h:head>
    <title>Login Box</title>
</h:head>
<h:body>
    <composite:interface>
    </composite:interface>
    <composite:implementation>
        <h:outputStylesheet library="css" name="login.css" target="head" />
        <div class="login_box">
            <h:form>
                <h:messages />
                <h:panelGrid columns="2" columnClasses="rightAlign,leftAlign">
                    <h:outputText value="Email address:" />
                    <h:inputText label="Email address" value="#{LoginController.email}"
                        required="true" size="8">
                        <f:validator validatorId="emailAddressValidator" />
                        <f:validateLength minimum="5" maximum="128" />
                    </h:inputText>
                    <h:outputText value="Password:" />
                    <h:inputText label="Password" value="#{LoginController.password}"
                        required="true" size="8" />
                </h:panelGrid>
                <h:commandButton action="${LoginController.login()}"
                    value="Login..." />
            </h:form>
        </div>
    </composite:implementation>
</h:body>
</html>

No meu aplicativo principal, quero trabalhar com modelos JSF para gerar as páginas e colocar a caixa de login com a tag nas páginas, conforme necessári

A configuração atual é:

jsf.jar inside um.ear:
|- META-INF/
|   |- faces-config.xml
|   |- web.xml
|   |- sub-web.xml
|   \- resources
|       \- login
|           \- login_box.xhtml
\- com
     |- inside it the managed bean classes

A chamada xhtml se parece com:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html 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:e="http://java.sun.com/jsf/composite/login">
<h:head>
    <title>Title</title>
</h:head>
<h:body>
    <e:login_box /> 
</h:body>
</html>

Quando o uso dessa maneira, não recebo erros e, no HTML resultante, vejo a caixa de login desejada, em vez da desejad

Quando eu faço isso em um EAR e coloco os beans gerenciados e o material JSF em um WAR (as classes são movidas para WEB-INF / classes e os recursos para WEB-INF / resources) dentro do EAR, tudo funciona bem. Mas, como posso implantar os beans gerenciados e o material JSF para uso posterior em outros EARs ou JARs? Eu li que o /META-INF/faces-config.xml seria suficiente para forçar o contêiner a procurar material JS

My faces-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
</faces-config>

Eu trabalho com o JBoss 6.1-Final e tentei todos os locais possíveis dentro do JAR, o que era lógico para mim. Coloquei as classes e o diretório do recurso na raiz '/', para / META-INF e WEB-INF. Tudo isso não funcionou. Alguém tem sugestões, o que há de errado aqui?

questionAnswers(1)

yourAnswerToTheQuestion