Re: Missing struts-config_1_0.dtd when not logged on

2001-02-23 Thread DONNIE HALE

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 !DOCTYPE ... 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

2001-02-22 Thread DONNIE HALE

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

2001-02-22 Thread Tom Miller

"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 servlet-mapping it is invoked under).  
This is necessary to make correct recognition of the action attribute in html:form 
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

2001-02-22 Thread Maya Muchnik

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 servlet-mapping it is 
invoked under).  This is necessary to make correct recognition of the action 
attribute in html:form 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

2001-02-21 Thread DONNIE HALE

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 !DOCTYPE ...  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

2001-02-21 Thread Tom Miller

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