You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Josh <jo...@globalherald.net> on 2009/10/20 18:50:46 UTC

How do I debug dispatching errors?

Hello,

I have a rather small application using servlets.  I am encountering a 
problem where the dispatching is not working properly.  There is a 
'web.xml' file that looks like the first listing below.

I have a debug statement set on the first line in the constructor of 
com.mycorp.referral.servlets.CreateRelationshipServlet.  However, when I 
call the servlet with this URL:  
http://localhost:8081/MyApp/CreateRelationshp ... the createRelationship 
is not called - rather, ProcessAction is called again.  I have set the 
debug levels in server.xml and web.xml to 'DEBUG'... but I do not get 
any errors in those logs.  How can I debug the dispatcher and determine 
why it's not dispatching properly?

Thanks very much!!

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
     <servlet>
        <servlet-name>LoginServlet</servlet-name>
        
<servlet-class>com.mycorp.referral.servlets.LoginServlet</servlet-class>
       
        <!-- <init-param>
            <param-name>propertyFileNameLocation</param-name>
            <param-value>C:/EclipseLib/FarmersQueue.properties</param-value>
        </init-param>
        -->
    </servlet>
    <servlet>
            <servlet-name>CreateRelationshipServlet</servlet-name>
            
<servlet-class>com.mycorp.referral.servlets.CreateRelationshipServlet</servlet-class>
    </servlet>
    <servlet>
            <servlet-name>ProcessActionServlet</servlet-name>
            
<servlet-class>com.mycorp.referral.servlets.ProcessActionServlet</servlet-class>
    </servlet>
    <servlet>
            <servlet-name>UpdateRelationshipServlet</servlet-name>
            
<servlet-class>com.mycorp.referral.servlets.UpdateRelationshipServlet</servlet-class>
    </servlet>   
   
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
            <servlet-name>CreateRelationshipServlet</servlet-name>
            <url-pattern>/CreateRelationship</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
            <servlet-name>ProcessActionServlet</servlet-name>
            <url-pattern>/ProcessAction</url-pattern>
    </servlet-mapping>   
    <servlet-mapping>
            <servlet-name>UpdateRelationshipServlet</servlet-name>
            <url-pattern>/UpdateRelationship</url-pattern>
    </servlet-mapping>       
       
    <welcome-file-list>
               <welcome-file>Login.jsp</welcome-file>
    </welcome-file-list>
</web-app>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: How do I debug dispatching errors?

Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Josh,

On 10/20/2009 12:50 PM, Josh wrote:
> I have a debug statement set on the first line in the constructor of
> com.mycorp.referral.servlets.CreateRelationshipServlet.  However, when I
> call the servlet with this URL: 
> http://localhost:8081/MyApp/CreateRelationshp ... the createRelationship
> is not called - rather, ProcessAction is called again.

How are you determining that CreateRelationship is called? If you have a
log statement in the constructor for your servlet, then it ought to only
be called once: when the servlet is instantiated a single time by the
container. That instance will be used to service all requests that map
to that servlet.

Perhaps you should put a log statement in the service() method (or
doGet, doPost, etc.) and see what you get, there.

> I have set the
> debug levels in server.xml and web.xml to 'DEBUG'...

AFAIK, there are no Tomcat-related "debug levels" to be set in either
server.xml or web.xml unless you are using an unsupported version of Tomcat.

>    <servlet>
>            <servlet-name>CreateRelationshipServlet</servlet-name>
>           
> <servlet-class>com.mycorp.referral.servlets.CreateRelationshipServlet</servlet-class>
> 
>    </servlet>
>    <servlet>
>            <servlet-name>ProcessActionServlet</servlet-name>
>           
> <servlet-class>com.mycorp.referral.servlets.ProcessActionServlet</servlet-class>
> 
>    </servlet>

[snip]

>    <servlet-mapping>
>            <servlet-name>CreateRelationshipServlet</servlet-name>
>            <url-pattern>/CreateRelationship</url-pattern>
>    </servlet-mapping>
>    <servlet-mapping>
>            <servlet-name>ProcessActionServlet</servlet-name>
>            <url-pattern>/ProcessAction</url-pattern>
>    </servlet-mapping>

The above looks just fine. Are you forwarding the user from
CreateRelationshipServlet to ProcessActionServlet instead of redirecting
them, and getting confused about the appearance of the URL?

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkrnUOQACgkQ9CaO5/Lv0PCMrwCdGPQKg+A4jUGis4on82sKL5q8
NJYAn3iilpKwt7ldbs1D19WXCAvo7PQs
=K8Jr
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: How do I debug dispatching errors?

Posted by Pid <pi...@pidster.com>.
On 26/10/2009 19:48, Josh wrote:
> This is Tomcat 5.5.26 under Windows XP, Java version as follows:
> java version "1.6.0_16"
> Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
> Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)
>
> Pid wrote:
>> Which dispatcher?
> Which dispatcher... can you help me out here? According to the file
> noted below, when I give it the URL:
>
> http://localhost:8080/CreateRelationship
>
> ...it will invoke the CreateRelationshipServlet which is
>
> com.mycorp.referral.servlets.CreateRelationshipServlet
>
> Whatever mechanism it is inside Tomcat that does this dispatching is not
> working as I expect it should... and it's not giving me any indication
> as to why. (Or, I am not able to understand any indication it may be
> giving me.)

What is your app called, is it called ROOT?
Where is your context.xml defined?

Please post a sanitised (comments & passwords removed if applicable) 
version of your server.xml.


p



>>> <?xml version="1.0" encoding="ISO-8859-1"?>
>>>
>>> <!DOCTYPE web-app
>>> PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
>>> "http://java.sun.com/dtd/web-app_2_3.dtd">
>>>
>>> <web-app>
>>> <servlet>
>>> <servlet-name>LoginServlet</servlet-name>
>>> <servlet-class>com.mycorp.referral.servlets.LoginServlet</servlet-class>
>>> <!-- <init-param>
>>> <param-name>propertyFileNameLocation</param-name>
>>> <param-value>C:/EclipseLib/FarmersQueue.properties</param-value>
>>> </init-param>
>>> -->
>>> </servlet>
>>> <servlet>
>>> <servlet-name>CreateRelationshipServlet</servlet-name>
>>> <servlet-class>com.mycorp.referral.servlets.CreateRelationshipServlet</servlet-class>
>>>
>>>
>>> </servlet>
>>> <servlet>
>>> <servlet-name>ProcessActionServlet</servlet-name>
>>> <servlet-class>com.mycorp.referral.servlets.ProcessActionServlet</servlet-class>
>>>
>>>
>>> </servlet>
>>> <servlet>
>>> <servlet-name>UpdateRelationshipServlet</servlet-name>
>>> <servlet-class>com.mycorp.referral.servlets.UpdateRelationshipServlet</servlet-class>
>>>
>>>
>>> </servlet> <servlet-mapping>
>>> <servlet-name>LoginServlet</servlet-name>
>>> <url-pattern>/Login</url-pattern>
>>> </servlet-mapping>
>>> <servlet-mapping>
>>> <servlet-name>CreateRelationshipServlet</servlet-name>
>>> <url-pattern>/CreateRelationship</url-pattern>
>>> </servlet-mapping>
>>> <servlet-mapping>
>>> <servlet-name>ProcessActionServlet</servlet-name>
>>> <url-pattern>/ProcessAction</url-pattern>
>>> </servlet-mapping> <servlet-mapping>
>>> <servlet-name>UpdateRelationshipServlet</servlet-name>
>>> <url-pattern>/UpdateRelationship</url-pattern>
>>> </servlet-mapping> <welcome-file-list>
>>> <welcome-file>Login.jsp</welcome-file>
>>> </welcome-file-list>
>>> </web-app>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>> For additional commands, e-mail: users-help@tomcat.apache.org
>>>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Re: How do I debug dispatching errors?

Posted by Josh <jo...@globalherald.net>.
This is Tomcat 5.5.26 under Windows XP, Java version as follows:
java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)

Pid wrote:
> Which dispatcher?
Which dispatcher... can you help me out here?  According to the file 
noted below, when I give it the URL:

http://localhost:8080/CreateRelationship

...it will invoke the CreateRelationshipServlet which is

com.mycorp.referral.servlets.CreateRelationshipServlet

Whatever mechanism it is inside Tomcat that does this dispatching is not 
working as I expect it should... and it's not giving me any indication 
as to why.  (Or, I am not able to understand any indication it may be 
giving me.)

>> <?xml version="1.0" encoding="ISO-8859-1"?>
>>
>> <!DOCTYPE web-app
>> PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
>> "http://java.sun.com/dtd/web-app_2_3.dtd">
>>
>> <web-app>
>> <servlet>
>> <servlet-name>LoginServlet</servlet-name>
>> <servlet-class>com.mycorp.referral.servlets.LoginServlet</servlet-class>
>> <!-- <init-param>
>> <param-name>propertyFileNameLocation</param-name>
>> <param-value>C:/EclipseLib/FarmersQueue.properties</param-value>
>> </init-param>
>> -->
>> </servlet>
>> <servlet>
>> <servlet-name>CreateRelationshipServlet</servlet-name>
>> <servlet-class>com.mycorp.referral.servlets.CreateRelationshipServlet</servlet-class> 
>>
>>
>> </servlet>
>> <servlet>
>> <servlet-name>ProcessActionServlet</servlet-name>
>> <servlet-class>com.mycorp.referral.servlets.ProcessActionServlet</servlet-class> 
>>
>>
>> </servlet>
>> <servlet>
>> <servlet-name>UpdateRelationshipServlet</servlet-name>
>> <servlet-class>com.mycorp.referral.servlets.UpdateRelationshipServlet</servlet-class> 
>>
>>
>> </servlet> <servlet-mapping>
>> <servlet-name>LoginServlet</servlet-name>
>> <url-pattern>/Login</url-pattern>
>> </servlet-mapping>
>> <servlet-mapping>
>> <servlet-name>CreateRelationshipServlet</servlet-name>
>> <url-pattern>/CreateRelationship</url-pattern>
>> </servlet-mapping>
>> <servlet-mapping>
>> <servlet-name>ProcessActionServlet</servlet-name>
>> <url-pattern>/ProcessAction</url-pattern>
>> </servlet-mapping> <servlet-mapping>
>> <servlet-name>UpdateRelationshipServlet</servlet-name>
>> <url-pattern>/UpdateRelationship</url-pattern>
>> </servlet-mapping> <welcome-file-list>
>> <welcome-file>Login.jsp</welcome-file>
>> </welcome-file-list>
>> </web-app>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: How do I debug dispatching errors?

Posted by Pid <pi...@pidster.com>.
On 20/10/2009 17:50, Josh wrote:
> Hello,
>
> I have a rather small application using servlets. I am encountering a
> problem where the dispatching is not working properly. There is a
> 'web.xml' file that looks like the first listing below.

"Like" or "is"?

> I have a debug statement set on the first line in the constructor of
> com.mycorp.referral.servlets.CreateRelationshipServlet. However, when I
> call the servlet with this URL:
> http://localhost:8081/MyApp/CreateRelationshp ... the createRelationship
> is not called - rather, ProcessAction is called again. I have set the
> debug levels in server.xml and web.xml to 'DEBUG'... but I do not get
> any errors in those logs. How can I debug the dispatcher and determine
> why it's not dispatching properly?

Which dispatcher?

(Which Tomcat version?, OS?, yada yada)

p


> <?xml version="1.0" encoding="ISO-8859-1"?>
>
> <!DOCTYPE web-app
> PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
> "http://java.sun.com/dtd/web-app_2_3.dtd">
>
> <web-app>
> <servlet>
> <servlet-name>LoginServlet</servlet-name>
> <servlet-class>com.mycorp.referral.servlets.LoginServlet</servlet-class>
> <!-- <init-param>
> <param-name>propertyFileNameLocation</param-name>
> <param-value>C:/EclipseLib/FarmersQueue.properties</param-value>
> </init-param>
> -->
> </servlet>
> <servlet>
> <servlet-name>CreateRelationshipServlet</servlet-name>
> <servlet-class>com.mycorp.referral.servlets.CreateRelationshipServlet</servlet-class>
>
> </servlet>
> <servlet>
> <servlet-name>ProcessActionServlet</servlet-name>
> <servlet-class>com.mycorp.referral.servlets.ProcessActionServlet</servlet-class>
>
> </servlet>
> <servlet>
> <servlet-name>UpdateRelationshipServlet</servlet-name>
> <servlet-class>com.mycorp.referral.servlets.UpdateRelationshipServlet</servlet-class>
>
> </servlet> <servlet-mapping>
> <servlet-name>LoginServlet</servlet-name>
> <url-pattern>/Login</url-pattern>
> </servlet-mapping>
> <servlet-mapping>
> <servlet-name>CreateRelationshipServlet</servlet-name>
> <url-pattern>/CreateRelationship</url-pattern>
> </servlet-mapping>
> <servlet-mapping>
> <servlet-name>ProcessActionServlet</servlet-name>
> <url-pattern>/ProcessAction</url-pattern>
> </servlet-mapping> <servlet-mapping>
> <servlet-name>UpdateRelationshipServlet</servlet-name>
> <url-pattern>/UpdateRelationship</url-pattern>
> </servlet-mapping> <welcome-file-list>
> <welcome-file>Login.jsp</welcome-file>
> </welcome-file-list>
> </web-app>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org