MissingResourceException-Java 5、JBoss 5.0、XSLT

MissingResourceException-Java 5、JBoss 5.0、XSLT,xslt,jboss5.x,Xslt,Jboss5.x,我已经编写了使用XSLT生成HTML响应的示例程序。检查下面的文件。 welcome.xsl <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://xml.apache.org/xalan/java" version="1.0"> <xsl:output method="html" indent="yes" /> <xsl:variable name="

我已经编写了使用XSLT生成HTML响应的示例程序。检查下面的文件。 welcome.xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:java="http://xml.apache.org/xalan/java" version="1.0">
<xsl:output method="html" indent="yes" />
<xsl:variable name="myResource" select="java:java.util.ResourceBundle.getBundle('com.carbonrider.web.xslt.AppResources')" />
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="first">
<h2>
<xsl:value-of select="java:getString($myResource,'hi')" />
</h2>
</xsl:template>
</xsl:stylesheet>
这是保存在curiousmind.web.xslt中的属性文件

资产


有人能告诉我问题出在哪里吗?

我试图通过实例化java.util.ResourceBundle从同一个servlet PageTransformer访问资源包,结果成功了。这导致了更多的混淆,因为为什么从同一个类实例化的transformer无法获得ResourceBundle实例。 我添加了xalan.jar文件,但它给出了相同的结果

最后,我考虑为jboss启用-verbose模式,以找出真正的原因。这给了我一个提示,当servlet被调用并实例化Transformer时,它正在从JBOSS_DIR/lib/annowed/xalan.jar加载xalan.jar文件。我最终不得不从jboss中删除xalan.jar和serializer.jar文件,我的页面运行良好

虽然这解决了问题,但我认为更好的方法是使用jboss-classloading.xml定制类加载行为。但无法获得相应的配置

package curiousmind.web.xslt;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.Document;

public class PageTransformer extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
DOMSource domSource = createDOMSource();
Transformer transformer = transFactory.newTransformer(new StreamSource(this.getClass().getResourceAsStream("welcome.xsl")));
Result result = new javax.xml.transform.stream.StreamResult(response.getWriter());
transformer.transform(domSource, result);
} catch (Exception e) {
throw new ServletException(e);
}
}
private DOMSource createDOMSource() throws Exception {
String xmlString = "<?xml version=\"1.0\" ?>\n<first><second>Hello World</second></first>";
byte[] buf = xmlString.getBytes("UTF-8");
BufferedInputStream is = new BufferedInputStream(new ByteArrayInputStream(buf));
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder domBuilder = domFactory.newDocumentBuilder();
Document dom = domBuilder.parse(is);
DOMSource domSource = new DOMSource(dom);
is.close();
return domSource;
}
}
ERROR [STDERR] SystemId Unknown; Line #7; Column #95; java.util.MissingResourceException: Can't find bundle for base name curiousmind.web.xslt.AppResources, locale en_US
hi=Hello World