java - vista - cómo compartir una página de error jsf entre múltiples guerras
no se ha resuelto el tipo de navegación para el componente (1)
Debe crear un ResourceResolver
personalizado que resuelva recursos de classpath, colóquelo en el archivo JAR común y luego gírelo en web-fragment.xml
del JAR (o en web.xml
de los WAR).
Ejemplo de lanzamiento:
package com.example;
import java.net.URL;
import javax.faces.view.facelets.ResourceResolver;
public class FaceletsResourceResolver extends ResourceResolver {
private ResourceResolver parent;
private String basePath;
public FaceletsResourceResolver(ResourceResolver parent) {
this.parent = parent;
this.basePath = "/META-INF/resources"; // TODO: Make configureable?
}
@Override
public URL resolveUrl(String path) {
URL url = parent.resolveUrl(path); // Resolves from WAR.
if (url == null) {
url = getClass().getResource(basePath + path); // Resolves from JAR.
}
return url;
}
}
con en web-fragment.xml
o web.xml
<context-param>
<param-name>javax.faces.FACELETS_RESOURCE_RESOLVER</param-name>
<param-value>com.example.FaceletsResourceResolver</param-value>
</context-param>
Estoy intentando compartir una página de error (error.xhtml) entre múltiples guerras. Todos están en una gran aplicación de oído, y todos usan una biblioteca de jar común, donde me gustaría poner esto.
La página de error debería usar web.xml, o mejor web-fragment.xml, y se declararía como una página de error java ee estándar.
Estructura EAR real:
EAR
EJB1
EJB2
WAR1 (using CommonWeb.jar)
WAR2 (using CommonWeb.jar)
WAR3 (using CommonWeb.jar)
Simplemente poner la página de error bajo META-INF / resources no funcionará, ya que no es un recurso.
Me gustaría tener lo menos posible para configurar en cada archivo de guerra.
Estoy usando Glassfish 3.1, pero me gustaría utilizar los estándares Java EE 6 tanto como sea posible.