[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xmlrpc-dev
Subject:    [jira] Commented: (XMLRPC-117) XmlRpcServlet  should allow for
From:       "Jimisola Laursen (JIRA)" <xmlrpc-dev () ws ! apache ! org>
Date:       2006-09-26 9:36:53
Message-ID: 16239499.1159263413068.JavaMail.jira () brutus
[Download RAW message or body]

    [ http://issues.apache.org/jira/browse/XMLRPC-117?page=comments#action_12437783 ] \
  
Jimisola Laursen commented on XMLRPC-117:
-----------------------------------------

Jochen,

Tried my patch with Jetty 6.0.1 (due to JETTY-121) and we have a Catch 22 problem \
with my patch and the current workings of XmlRpcServlet. A NPE will occur on \
XmlRpcServlet.setAuthenticationHandler:85:

server.setAuthenticationHandler(pHandler);

with the following code (slightly updated version of the test for XMLRPC-116 to make \
use of JETTY-121):

        org.mortbay.jetty.Server server = new org.mortbay.jetty.Server();

        Connector connector = new SocketConnector();
        connector.setPort(8080);
        server.setConnectors(new Connector[]{connector});
        
        Context root = new Context(server, "/", Context.SESSIONS);

        XmlRpcServlet servlet = new XmlRpcServlet();
        ServletHolder servletHolder = new ServletHolder(servlet);
        servlet.setAuthenticationHandler(new MyAuthenticationHandler());
        
        root.addServlet(servletHolder, "/RPC2/*");
        servletHolder.setInitParameter("enabledForExtensions", "true");
        servletHolder.setInitParameter("contentLengthOptional", "true");

        server.setSendServerVersion(true);
        
        server.start();
        server.join();


The reason for this is XmlRpcServlet.server is not instansiated until init has been \
invoked and Jetty doesn't invoke the init method until startup (i.e. during \
doStart(...)). The following line is in XmlRpcServlet.init(...)

			server = newXmlRpcServer(pConfig);

And even though the newXmlRpcServer takes ServletConfig it is not used:

	protected XmlRpcServletServer newXmlRpcServer(ServletConfig pConfig)
			throws XmlRpcException {
		return new XmlRpcServletServer();
	}

Also not that  AuthenticationHandler, RequestProcessorFactoryFactory and \
TypeConverterFactory must have been set prior to \
newXmlRpcHandlerMapping/newPropertyHandlerMapping being called since the \
XmlRpcHandlerMapping must use those explicitly configured.

So, to sum it up:

1) server has not been instansiated by init being called  when the setters for \
AuthenticationHandler, RequestProcessorFactoryFactory and TypeConverterFactory are \
called

2) the XmlRpcServlet cannot call newXmlRpcHandlerMapping to set \
XmlRpcHandlerMappingon the XmlRpcServletServer (server) until AuthenticationHandler, \
RequestProcessorFactoryFactory and TypeConverterFactory have had a chance to be \
configured


A simply workaround for 1) would be to outside the XMLRPC library when using Jetty \
do:

1. context.start();
2. call setters on XmlRpcServlet
3. server.start();

Note: The problem specified in 2) still exists. A simple change would be to not call \
newXmlRpcHandlerMapping until the first call to doPost(...).

> XmlRpcServlet  should allow for usage of AuthenticationHandler, \
> RequestProcessorFactoryFactory and TypeConverterFactory implementations to be \
>                 configurable
> ----------------------------------------------------------------------------------------------------------------------------------------------------------
>  
> Key: XMLRPC-117
> URL: http://issues.apache.org/jira/browse/XMLRPC-117
> Project: XML-RPC
> Issue Type: Improvement
> Reporter: Jimisola Laursen
> Attachments: XMLRPC-117.diff
> 
> 
> The XmlRpcServlet should have setters for
> - AuthenticationHandler 
> - RequestProcessorFactoryFactory
> - TypeConverterFactory 
> and it shall use this accordingly.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: \
                http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic