Re: Missing struts-config_1_0.dtd when not logged on
Craig, I don't know if this is applicable or not, but if I set the new "validating" servlet parm to "false", I'll still get parse errors if the tag is in the .xml file. I get around this by deleting that tag from the .xml file. With both of these elements in place, I don't get any errors during parsing. FWIW... Donnie >>> [EMAIL PROTECTED] 02/23/01 01:07PM >>> Michael McCallister wrote: > Struts may include a local copy of the web.xml DTD file, in the case of the > non-validating parse of web.xml, nothing causes it to be used instead of > the external system identifier. ActionServlet.initServlet() creates a new > Digester, never calls register(), and then calls parse(). We probably need > some code like this snippet, found in ActionServlet.initDigester(): > > > // Register our local copy of the DTDs that we can find > > for (int i = 0; i < registrations.length; i += 2) { > > URL url = this.getClass().getResource(registrations[i+1]); > > if (url != null) > > digester.register(registrations[i], url.toString()); > > } > > It doesn't make intuitive sense (to me), it looks like SAXParser.parse() > insists on being able to access the DTDs even when it is in non-validating > mode. > > To confirm this, I bumped up the detail level of ActionServlet and now, > right before the Parse Fatal Error exception, I get the following logged to > System.out: > > >resolveEntity('-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN', > >'http:// > >java.sun.com/j2ee/dtds/web-app_2_2.dtd') > > Not registered, use system identifier > > This seems to be the root cause of the bug I filed last night: PR 683. Of > course, the bug report only described the symptoms (and poorly at > that). Should I file a new bug report with this analysis? > Thanks Mike, but it nailed me to (as soon as I tried to run a Struts app on my disconnected laptop :-), so I know the details now. I am going to fix this by including local copies of the relevant web.xml DTDs (for both 2.2 and 2.3) in the struts.jar file. > > Mike > Craig
Re: Missing struts-config_1_0.dtd when not logged on
Michael McCallister wrote: > Struts may include a local copy of the web.xml DTD file, in the case of the > non-validating parse of web.xml, nothing causes it to be used instead of > the external system identifier. ActionServlet.initServlet() creates a new > Digester, never calls register(), and then calls parse(). We probably need > some code like this snippet, found in ActionServlet.initDigester(): > > > // Register our local copy of the DTDs that we can find > > for (int i = 0; i < registrations.length; i += 2) { > > URL url = this.getClass().getResource(registrations[i+1]); > > if (url != null) > > digester.register(registrations[i], url.toString()); > > } > > It doesn't make intuitive sense (to me), it looks like SAXParser.parse() > insists on being able to access the DTDs even when it is in non-validating > mode. > > To confirm this, I bumped up the detail level of ActionServlet and now, > right before the Parse Fatal Error exception, I get the following logged to > System.out: > > >resolveEntity('-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN', > >'http:// > >java.sun.com/j2ee/dtds/web-app_2_2.dtd') > > Not registered, use system identifier > > This seems to be the root cause of the bug I filed last night: PR 683. Of > course, the bug report only described the symptoms (and poorly at > that). Should I file a new bug report with this analysis? > Thanks Mike, but it nailed me to (as soon as I tried to run a Struts app on my disconnected laptop :-), so I know the details now. I am going to fix this by including local copies of the relevant web.xml DTDs (for both 2.2 and 2.3) in the struts.jar file. > > Mike > Craig
Re: Missing struts-config_1_0.dtd when not logged on
Struts may include a local copy of the web.xml DTD file, in the case of the non-validating parse of web.xml, nothing causes it to be used instead of the external system identifier. ActionServlet.initServlet() creates a new Digester, never calls register(), and then calls parse(). We probably need some code like this snippet, found in ActionServlet.initDigester(): > // Register our local copy of the DTDs that we can find > for (int i = 0; i < registrations.length; i += 2) { > URL url = this.getClass().getResource(registrations[i+1]); > if (url != null) > digester.register(registrations[i], url.toString()); > } It doesn't make intuitive sense (to me), it looks like SAXParser.parse() insists on being able to access the DTDs even when it is in non-validating mode. To confirm this, I bumped up the detail level of ActionServlet and now, right before the Parse Fatal Error exception, I get the following logged to System.out: >resolveEntity('-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN', >'http:// >java.sun.com/j2ee/dtds/web-app_2_2.dtd') > Not registered, use system identifier This seems to be the root cause of the bug I filed last night: PR 683. Of course, the bug report only described the symptoms (and poorly at that). Should I file a new bug report with this analysis? Mike At 11:58 AM 2/21/2001, you wrote: >DONNIE HALE wrote: > > > Tom, > > > > First, the web.xml file isn't parsed by the ActionServlet; it's parsed > by the servlet engine when it's initializing a web application (web.xml > is part of the standard for defining the properties/characteristics of a > "web application"). It should be completely parsed and accepted as > correct by the time ActionServlet.init() is called, during which the > struts-config.xml file is parsed. > > > >Actually, a recent change to ActionServlet means that it *does* do a >non-validating parse of web.xml as well (to figure out what > it is invoked under). This is necessary to make correct >recognition of the action attribute in work on path-mapped >servlets. > >Struts includes a local copy of the struts-config DTD file, and Tomcat >3.2.1 includes a local copy of the web.xml DTD file -- which should both >be used when you specify a public identifier that matches (as it appears >you are doing). Have you by any chance changed the parser that came with >Tomcat (jaxp.jar and parser.jar), or tried to put a parser in your >WEB-INF/lib directory? > >Craig
Re: Missing struts-config_1_0.dtd when not logged on
Tom, Tomcat includes a local copy of web_app_2_2.dtd file, but the file name is web.dtd. Maybe this is your problem. In my application I am going to replace a reference to Sun site of web_app_2_2.dtd to a local copy of web.dtd (I will copy it to the WEB-INF/dtds directory). Maya Tom Miller wrote: > "Craig R. McClanahan" wrote: > > > DONNIE HALE wrote: > > > > > Tom, > > > > > > First, the web.xml file isn't parsed by the ActionServlet; it's parsed by the >servlet engine when it's initializing a web application (web.xml is part of the >standard for defining the properties/characteristics of a "web application"). It >should be completely parsed and accepted as correct by the time ActionServlet.init() >is called, during which the struts-config.xml file is parsed. > > > > > > > Actually, a recent change to ActionServlet means that it *does* do a >non-validating parse of web.xml as well (to figure out what it is >invoked under). This is necessary to make correct recognition of the action >attribute in work on path-mapped servlets. > > > > Struts includes a local copy of the struts-config DTD file, and Tomcat 3.2.1 >includes a local copy of the web.xml DTD file -- which should both be used when you >specify a public identifier that matches (as it appears you are doing). Have you by >any chance changed the parser that came with Tomcat (jaxp.jar and parser.jar), or >tried to put a parser in your WEB-INF/lib directory? > > > > Craig > > Re: jaxp.jar and parser.jar, I have been all over the map trying to get my Visual >Age for Java environment working with Struts again. But I started clean with fresh >installations of Tomcat 3.2.1 and Struts build of Feb. 20, no edits and running >totally independent of VAJ. I drop the struts-example into webapps and start up, not >logged onto the Internet. > > I can see in the debug trace that the struts_config_1_0.dtd resolving to the local >copy as you explained. But when it comes time for web_app_2_2.dtd, the SAXParser >throws a fatal error. After that, I can access the index.jsp of the example, but >login with "user" and "pass" yields an HTTP 404. If I enter registration info and >attempt to submit it, again HTTP 404. > > When I restart after loggin on to the Internet, the example application works as >expected. Do you think something is broken? > -- > Tom Miller > Miller Associates, Inc. > [EMAIL PROTECTED] > 641.469.3535 Phone > 413.581.6326 FAX
Re: Missing struts-config_1_0.dtd when not logged on
"Craig R. McClanahan" wrote: > DONNIE HALE wrote: > > > Tom, > > > > First, the web.xml file isn't parsed by the ActionServlet; it's parsed by the >servlet engine when it's initializing a web application (web.xml is part of the >standard for defining the properties/characteristics of a "web application"). It >should be completely parsed and accepted as correct by the time ActionServlet.init() >is called, during which the struts-config.xml file is parsed. > > > > Actually, a recent change to ActionServlet means that it *does* do a non-validating >parse of web.xml as well (to figure out what it is invoked under). >This is necessary to make correct recognition of the action attribute in >work on path-mapped servlets. > > Struts includes a local copy of the struts-config DTD file, and Tomcat 3.2.1 >includes a local copy of the web.xml DTD file -- which should both be used when you >specify a public identifier that matches (as it appears you are doing). Have you by >any chance changed the parser that came with Tomcat (jaxp.jar and parser.jar), or >tried to put a parser in your WEB-INF/lib directory? > > Craig Re: jaxp.jar and parser.jar, I have been all over the map trying to get my Visual Age for Java environment working with Struts again. But I started clean with fresh installations of Tomcat 3.2.1 and Struts build of Feb. 20, no edits and running totally independent of VAJ. I drop the struts-example into webapps and start up, not logged onto the Internet. I can see in the debug trace that the struts_config_1_0.dtd resolving to the local copy as you explained. But when it comes time for web_app_2_2.dtd, the SAXParser throws a fatal error. After that, I can access the index.jsp of the example, but login with "user" and "pass" yields an HTTP 404. If I enter registration info and attempt to submit it, again HTTP 404. When I restart after loggin on to the Internet, the example application works as expected. Do you think something is broken? -- Tom Miller Miller Associates, Inc. [EMAIL PROTECTED] 641.469.3535 Phone 413.581.6326 FAX
Re: Missing struts-config_1_0.dtd when not logged on
What servlet engine are you using? -Donnie >>> [EMAIL PROTECTED] 02/21/01 09:19AM >>> Presumeably some kind of configuration error. Any ideas how to correct this? I'm using the Feb 20 build. During startup when SAXParserImpl trys to execute for the struts-example, if I'm logged on to the Internet, I get: resolveEntity('-//Apache Software Foundation//DTD Struts Configuration 1.0//EN', 'http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd') Not registered, use system identifier If I am logged on, I get: resolveEntity('-//Apache Software Foundation//DTD Struts Configuration 1.0//EN', 'http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd') Not registered, use system identifier Parse Fatal Error at line 5 column -1: External entity not found: "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd". org.xml.sax.SAXParseException: External entity not found: "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd". java.lang.Throwable(java.lang.String) java.lang.Exception(java.lang.String) org.xml.sax.SAXException(java.lang.String, java.lang.Exception) org.xml.sax.SAXParseException(java.lang.String, org.xml.sax.Locator, java.lang.Exception) void com.sun.xml.parser.Parser.fatal(java.lang.String, java.lang.Object [], java.lang.Exception) void com.sun.xml.parser.Parser.externalParameterEntity(com.sun.xml.parser.ExternalEntity) boolean com.sun.xml.parser.Parser.maybeDoctypeDecl() void com.sun.xml.parser.Parser.parseInternal(org.xml.sax.InputSource) void com.sun.xml.parser.Parser.parse(org.xml.sax.InputSource) void javax.xml.parsers.SAXParser.parse(org.xml.sax.InputSource, org.xml.sax.HandlerBase) void javax.xml.parsers.SAXParser.parse(java.io.InputStream, org.xml.sax.HandlerBase) java.lang.Object org.apache.struts.digester.Digester.parse(java.io.InputStream) void org.apache.struts.action.ActionServlet.initMapping() void org.apache.struts.action.ActionServlet.init() void javax.servlet.GenericServlet.init(javax.servlet.ServletConfig) void org.apache.tomcat.core.ServletWrapper.doInit() void org.apache.tomcat.core.Handler.init() void org.apache.tomcat.core.ServletWrapper.init() void org.apache.tomcat.context.LoadOnStartupInterceptor.contextInit(org.apache.tomcat.core.Context) void org.apache.tomcat.core.ContextManager.initContext(org.apache.tomcat.core.Context) void org.apache.tomcat.core.ContextManager.init() void org.apache.tomcat.startup.Tomcat.execute(java.lang.String []) void org.apache.tomcat.startup.Tomcat.main(java.lang.String []) java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object []) void TomcatStart.start(java.lang.String [], java.lang.String) void TomcatStart.main(java.lang.String []) -- Tom Miller Miller Associates, Inc. [EMAIL PROTECTED] 641.469.3535 Phone 413.581.6326 FAX
Re: Missing struts-config_1_0.dtd when not logged on
Tomcat 3.2.1 DONNIE HALE wrote: > What servlet engine are you using? > > -Donnie > > >>> [EMAIL PROTECTED] 02/21/01 09:19AM >>> > Presumeably some kind of configuration error. Any ideas how to correct > this? > > I'm using the Feb 20 build. During startup when SAXParserImpl trys to > execute for the struts-example, if I'm logged on to the Internet, I get: > > resolveEntity('-//Apache Software Foundation//DTD Struts Configuration > 1.0//EN', 'http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd') > > Not registered, use system identifier > > If I am logged on, I get: > > resolveEntity('-//Apache Software Foundation//DTD Struts Configuration > 1.0//EN', 'http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd') > > Not registered, use system identifier > Parse Fatal Error at line 5 column -1: External entity not found: > "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd". > org.xml.sax.SAXParseException: External entity not found: > "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd". > java.lang.Throwable(java.lang.String) > java.lang.Exception(java.lang.String) > org.xml.sax.SAXException(java.lang.String, java.lang.Exception) > org.xml.sax.SAXParseException(java.lang.String, org.xml.sax.Locator, > java.lang.Exception) > void com.sun.xml.parser.Parser.fatal(java.lang.String, java.lang.Object > [], java.lang.Exception) > void > com.sun.xml.parser.Parser.externalParameterEntity(com.sun.xml.parser.ExternalEntity) > > boolean com.sun.xml.parser.Parser.maybeDoctypeDecl() > void com.sun.xml.parser.Parser.parseInternal(org.xml.sax.InputSource) > void com.sun.xml.parser.Parser.parse(org.xml.sax.InputSource) > void javax.xml.parsers.SAXParser.parse(org.xml.sax.InputSource, > org.xml.sax.HandlerBase) > void javax.xml.parsers.SAXParser.parse(java.io.InputStream, > org.xml.sax.HandlerBase) > java.lang.Object > org.apache.struts.digester.Digester.parse(java.io.InputStream) > void org.apache.struts.action.ActionServlet.initMapping() > void org.apache.struts.action.ActionServlet.init() > void javax.servlet.GenericServlet.init(javax.servlet.ServletConfig) > void org.apache.tomcat.core.ServletWrapper.doInit() > void org.apache.tomcat.core.Handler.init() > void org.apache.tomcat.core.ServletWrapper.init() > void > >org.apache.tomcat.context.LoadOnStartupInterceptor.contextInit(org.apache.tomcat.core.Context) > > void > org.apache.tomcat.core.ContextManager.initContext(org.apache.tomcat.core.Context) > > void org.apache.tomcat.core.ContextManager.init() > void org.apache.tomcat.startup.Tomcat.execute(java.lang.String []) > void org.apache.tomcat.startup.Tomcat.main(java.lang.String []) > java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, > java.lang.Object []) > void TomcatStart.start(java.lang.String [], java.lang.String) > void TomcatStart.main(java.lang.String []) > > -- > Tom Miller > Miller Associates, Inc. > [EMAIL PROTECTED] > 641.469.3535 Phone > 413.581.6326 FAX -- Tom Miller Miller Associates, Inc. [EMAIL PROTECTED] 641.469.3535 Phone 413.581.6326 FAX
Re: Missing struts-config_1_0.dtd when not logged on
Thanks Donnie, that worked just fine. But once past struts_config.xml, and the ActionServlet attempts to parse the web app deployment descriptor (i.e. WEB-INF/web.xml) I get the following. And hints here? I looked for but could not find a similar place to turn off validating as with struts_config.xml. I wonder what the chances are that this would have been fixed in the last night's version. I suppose if this is a bug, it is just now surfacing. resolveEntity('-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN', 'http://java.sun.com/j2ee/dtds/web-app_2_2.dtd') Not registered, use system identifier Parse Fatal Error at line 5 column -1: External entity not found: "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd". org.xml.sax.SAXParseException: External entity not found: "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd". java.lang.Throwable(java.lang.String) java.lang.Exception(java.lang.String) org.xml.sax.SAXException(java.lang.String, java.lang.Exception) org.xml.sax.SAXParseException(java.lang.String, org.xml.sax.Locator, java.lang.Exception) void com.sun.xml.parser.Parser.fatal(java.lang.String, java.lang.Object [], java.lang.Exception) void com.sun.xml.parser.Parser.externalParameterEntity(com.sun.xml.parser.ExternalEntity) boolean com.sun.xml.parser.Parser.maybeDoctypeDecl() void com.sun.xml.parser.Parser.parseInternal(org.xml.sax.InputSource) void com.sun.xml.parser.Parser.parse(org.xml.sax.InputSource) void javax.xml.parsers.SAXParser.parse(org.xml.sax.InputSource, org.xml.sax.HandlerBase) void javax.xml.parsers.SAXParser.parse(java.io.InputStream, org.xml.sax.HandlerBase) java.lang.Object org.apache.struts.digester.Digester.parse(java.io.InputStream) void org.apache.struts.action.ActionServlet.initServlet() void org.apache.struts.action.ActionServlet.init() void javax.servlet.GenericServlet.init(javax.servlet.ServletConfig) void org.apache.tomcat.core.ServletWrapper.doInit() void org.apache.tomcat.core.Handler.init() void org.apache.tomcat.core.ServletWrapper.init() void org.apache.tomcat.context.LoadOnStartupInterceptor.contextInit(org.apache.tomcat.core.Context) void org.apache.tomcat.core.ContextManager.initContext(org.apache.tomcat.core.Context) void org.apache.tomcat.core.ContextManager.init() void org.apache.tomcat.startup.Tomcat.execute(java.lang.String []) void org.apache.tomcat.startup.Tomcat.main(java.lang.String []) java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object []) void TomcatStart.start(java.lang.String [], java.lang.String) void TomcatStart.main(java.lang.String []) -- Tom Miller Miller Associates, Inc. [EMAIL PROTECTED] 641.469.3535 Phone 413.581.6326 FAX
Re: Missing struts-config_1_0.dtd when not logged on
Well I'm sure this should work under Tomcat 3.2.1 (unless something in the Feb 20 build broke things). I've had this issue under other servlet engines, and a slight enhancement was made to Struts last week as a workaround. In the web.xml, add a parameter to the Action servlet with the name "validating" and the value "false"; and remove the tag from the struts-config.xml file. This will prevent DTD validation from being done when the struts-config.xml file is being parse. In the case of Tomcat 3.2.1, though, I'd only use this temporarily as a workaround. I know this has and is supposed to work on that platform. -Donnie >>> [EMAIL PROTECTED] 02/21/01 11:02AM >>> Tomcat 3.2.1 DONNIE HALE wrote: > What servlet engine are you using? > > -Donnie > > >>> [EMAIL PROTECTED] 02/21/01 09:19AM >>> > Presumeably some kind of configuration error. Any ideas how to correct > this? > > I'm using the Feb 20 build. During startup when SAXParserImpl trys to > execute for the struts-example, if I'm logged on to the Internet, I get: > > resolveEntity('-//Apache Software Foundation//DTD Struts Configuration > 1.0//EN', 'http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd') > > Not registered, use system identifier > > If I am logged on, I get: > > resolveEntity('-//Apache Software Foundation//DTD Struts Configuration > 1.0//EN', 'http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd') > > Not registered, use system identifier > Parse Fatal Error at line 5 column -1: External entity not found: > "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd". > org.xml.sax.SAXParseException: External entity not found: > "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd". > java.lang.Throwable(java.lang.String) > java.lang.Exception(java.lang.String) > org.xml.sax.SAXException(java.lang.String, java.lang.Exception) > org.xml.sax.SAXParseException(java.lang.String, org.xml.sax.Locator, > java.lang.Exception) > void com.sun.xml.parser.Parser.fatal(java.lang.String, java.lang.Object > [], java.lang.Exception) > void > com.sun.xml.parser.Parser.externalParameterEntity(com.sun.xml.parser.ExternalEntity) > > boolean com.sun.xml.parser.Parser.maybeDoctypeDecl() > void com.sun.xml.parser.Parser.parseInternal(org.xml.sax.InputSource) > void com.sun.xml.parser.Parser.parse(org.xml.sax.InputSource) > void javax.xml.parsers.SAXParser.parse(org.xml.sax.InputSource, > org.xml.sax.HandlerBase) > void javax.xml.parsers.SAXParser.parse(java.io.InputStream, > org.xml.sax.HandlerBase) > java.lang.Object > org.apache.struts.digester.Digester.parse(java.io.InputStream) > void org.apache.struts.action.ActionServlet.initMapping() > void org.apache.struts.action.ActionServlet.init() > void javax.servlet.GenericServlet.init(javax.servlet.ServletConfig) > void org.apache.tomcat.core.ServletWrapper.doInit() > void org.apache.tomcat.core.Handler.init() > void org.apache.tomcat.core.ServletWrapper.init() > void > >org.apache.tomcat.context.LoadOnStartupInterceptor.contextInit(org.apache.tomcat.core.Context) > > void > org.apache.tomcat.core.ContextManager.initContext(org.apache.tomcat.core.Context) > > void org.apache.tomcat.core.ContextManager.init() > void org.apache.tomcat.startup.Tomcat.execute(java.lang.String []) > void org.apache.tomcat.startup.Tomcat.main(java.lang.String []) > java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, > java.lang.Object []) > void TomcatStart.start(java.lang.String [], java.lang.String) > void TomcatStart.main(java.lang.String []) > > -- > Tom Miller > Miller Associates, Inc. > [EMAIL PROTECTED] > 641.469.3535 Phone > 413.581.6326 FAX -- Tom Miller Miller Associates, Inc. [EMAIL PROTECTED] 641.469.3535 Phone 413.581.6326 FAX
Re: Missing struts-config_1_0.dtd when not logged on
Tom, First, the web.xml file isn't parsed by the ActionServlet; it's parsed by the servlet engine when it's initializing a web application (web.xml is part of the standard for defining the properties/characteristics of a "web application"). It should be completely parsed and accepted as correct by the time ActionServlet.init() is called, during which the struts-config.xml file is parsed. Second, I'm now at a loss as to what's causing your problem. It seems as though it's more systemic and the earlier workaround just addressed a symptom. I think this is going to have to wait for one of the "big guns" to help you. Sorry... Donnie >>> [EMAIL PROTECTED] 02/21/01 12:32PM >>> Thanks Donnie, that worked just fine. But once past struts_config.xml, and the ActionServlet attempts to parse the web app deployment descriptor (i.e. WEB-INF/web.xml) I get the following. And hints here? I looked for but could not find a similar place to turn off validating as with struts_config.xml. I wonder what the chances are that this would have been fixed in the last night's version. I suppose if this is a bug, it is just now surfacing. resolveEntity('-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN', 'http://java.sun.com/j2ee/dtds/web-app_2_2.dtd') Not registered, use system identifier Parse Fatal Error at line 5 column -1: External entity not found: "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd". org.xml.sax.SAXParseException: External entity not found: "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd". java.lang.Throwable(java.lang.String) java.lang.Exception(java.lang.String) org.xml.sax.SAXException(java.lang.String, java.lang.Exception) org.xml.sax.SAXParseException(java.lang.String, org.xml.sax.Locator, java.lang.Exception) void com.sun.xml.parser.Parser.fatal(java.lang.String, java.lang.Object [], java.lang.Exception) void com.sun.xml.parser.Parser.externalParameterEntity(com.sun.xml.parser.ExternalEntity) boolean com.sun.xml.parser.Parser.maybeDoctypeDecl() void com.sun.xml.parser.Parser.parseInternal(org.xml.sax.InputSource) void com.sun.xml.parser.Parser.parse(org.xml.sax.InputSource) void javax.xml.parsers.SAXParser.parse(org.xml.sax.InputSource, org.xml.sax.HandlerBase) void javax.xml.parsers.SAXParser.parse(java.io.InputStream, org.xml.sax.HandlerBase) java.lang.Object org.apache.struts.digester.Digester.parse(java.io.InputStream) void org.apache.struts.action.ActionServlet.initServlet() void org.apache.struts.action.ActionServlet.init() void javax.servlet.GenericServlet.init(javax.servlet.ServletConfig) void org.apache.tomcat.core.ServletWrapper.doInit() void org.apache.tomcat.core.Handler.init() void org.apache.tomcat.core.ServletWrapper.init() void org.apache.tomcat.context.LoadOnStartupInterceptor.contextInit(org.apache.tomcat.core.Context) void org.apache.tomcat.core.ContextManager.initContext(org.apache.tomcat.core.Context) void org.apache.tomcat.core.ContextManager.init() void org.apache.tomcat.startup.Tomcat.execute(java.lang.String []) void org.apache.tomcat.startup.Tomcat.main(java.lang.String []) java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object []) void TomcatStart.start(java.lang.String [], java.lang.String) void TomcatStart.main(java.lang.String []) -- Tom Miller Miller Associates, Inc. [EMAIL PROTECTED] 641.469.3535 Phone 413.581.6326 FAX
Re: Missing struts-config_1_0.dtd when not logged on
DONNIE HALE wrote: > Tom, > > First, the web.xml file isn't parsed by the ActionServlet; it's parsed by the >servlet engine when it's initializing a web application (web.xml is part of the >standard for defining the properties/characteristics of a "web application"). It >should be completely parsed and accepted as correct by the time ActionServlet.init() >is called, during which the struts-config.xml file is parsed. > Actually, a recent change to ActionServlet means that it *does* do a non-validating parse of web.xml as well (to figure out what it is invoked under). This is necessary to make correct recognition of the action attribute in work on path-mapped servlets. Struts includes a local copy of the struts-config DTD file, and Tomcat 3.2.1 includes a local copy of the web.xml DTD file -- which should both be used when you specify a public identifier that matches (as it appears you are doing). Have you by any chance changed the parser that came with Tomcat (jaxp.jar and parser.jar), or tried to put a parser in your WEB-INF/lib directory? Craig
Missing struts-config_1_0.dtd when not logged on
Presumeably some kind of configuration error. Any ideas how to correct this? I'm using the Feb 20 build. During startup when SAXParserImpl trys to execute for the struts-example, if I'm logged on to the Internet, I get: resolveEntity('-//Apache Software Foundation//DTD Struts Configuration 1.0//EN', 'http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd') Not registered, use system identifier If I am logged on, I get: resolveEntity('-//Apache Software Foundation//DTD Struts Configuration 1.0//EN', 'http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd') Not registered, use system identifier Parse Fatal Error at line 5 column -1: External entity not found: "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd". org.xml.sax.SAXParseException: External entity not found: "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd". java.lang.Throwable(java.lang.String) java.lang.Exception(java.lang.String) org.xml.sax.SAXException(java.lang.String, java.lang.Exception) org.xml.sax.SAXParseException(java.lang.String, org.xml.sax.Locator, java.lang.Exception) void com.sun.xml.parser.Parser.fatal(java.lang.String, java.lang.Object [], java.lang.Exception) void com.sun.xml.parser.Parser.externalParameterEntity(com.sun.xml.parser.ExternalEntity) boolean com.sun.xml.parser.Parser.maybeDoctypeDecl() void com.sun.xml.parser.Parser.parseInternal(org.xml.sax.InputSource) void com.sun.xml.parser.Parser.parse(org.xml.sax.InputSource) void javax.xml.parsers.SAXParser.parse(org.xml.sax.InputSource, org.xml.sax.HandlerBase) void javax.xml.parsers.SAXParser.parse(java.io.InputStream, org.xml.sax.HandlerBase) java.lang.Object org.apache.struts.digester.Digester.parse(java.io.InputStream) void org.apache.struts.action.ActionServlet.initMapping() void org.apache.struts.action.ActionServlet.init() void javax.servlet.GenericServlet.init(javax.servlet.ServletConfig) void org.apache.tomcat.core.ServletWrapper.doInit() void org.apache.tomcat.core.Handler.init() void org.apache.tomcat.core.ServletWrapper.init() void org.apache.tomcat.context.LoadOnStartupInterceptor.contextInit(org.apache.tomcat.core.Context) void org.apache.tomcat.core.ContextManager.initContext(org.apache.tomcat.core.Context) void org.apache.tomcat.core.ContextManager.init() void org.apache.tomcat.startup.Tomcat.execute(java.lang.String []) void org.apache.tomcat.startup.Tomcat.main(java.lang.String []) java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object []) void TomcatStart.start(java.lang.String [], java.lang.String) void TomcatStart.main(java.lang.String []) -- Tom Miller Miller Associates, Inc. [EMAIL PROTECTED] 641.469.3535 Phone 413.581.6326 FAX