users@glassfish.java.net

GF 3.1.1 JSR-299 (Weld) DTD catalog -- DTD resolving without internet connection

From: Bernhard Thalmayr <bernhard.thalmayr_at_painstakingminds.com>
Date: Wed, 23 Nov 2011 08:49:28 +0100

Hi experts, I have a 3rd party web-app which includes WEB-INF/beans.xml.
Its content starts with

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  "http://www.springframework.org/dtd/spring-beans.dtd">



Weld deployment fails because it can not resolve this DTD.

org.jboss.weld.exceptions.IllegalStateException: WELD-001201 Error loading
beans.xml file:<APP-DIR>/WEB-INF/beans.xml
        at org.jboss.weld.xml.BeansXmlParser.parse(BeansXmlParser.java:106)
        at org.jboss.weld.xml.BeansXmlParser.parse(BeansXmlParser.java:138)
        at
org.jboss.weld.bootstrap.WeldBootstrap.parse(WeldBootstrap.java:519)
        at
org.glassfish.weld.BeanDeploymentArchiveImpl.getBeansXml(BeanDeploymentArchiveImpl.java:249)
        at
org.jboss.weld.bootstrap.BeanDeployment.<init>(BeanDeployment.java:104)
        at
org.jboss.weld.bootstrap.WeldBootstrap$DeploymentVisitor.visit(WeldBootstrap.java:185)
        at
org.jboss.weld.bootstrap.WeldBootstrap$DeploymentVisitor.visit(WeldBootstrap.java:156)
        at
org.jboss.weld.bootstrap.WeldBootstrap.startContainer(WeldBootstrap.java:293)
        at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:167)


Weld code does

public BeansXml parse(final URL beansXml)
   {
      SAXParserFactory factory = SAXParserFactory.newInstance();
      factory.setValidating(true);
      factory.setNamespaceAware(true);
      if (beansXml == null)"


Can I tweak GlassFish to load 'spring-beans.dtd' from it's local 'dtd'
directory llike it's described here ...
http://jaxb.java.net/jaxb20-ea3/docs/catalog.html?

Where do I have to define the additinal DTD entry?

TIA,
Bernhard

-- 
IT-Consulting Bernhard Thalmayr
- Painstaking Minds -
83620 Vagen (Munich area)
Germany