[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xmlblaster] Exception in the method I_Session.init

Hi Xavier,

Xavier Roques wrote:
> Hi,
> I 'm using Xmlblaster 1.6
> I implemented my own class implementing the interface I_Session
> In the method 
> public String init(I_SecurityQos securityQos) throws XmlBlasterException
> I throws the exception when the user cannot connect to the server (wrong
> password ...)
> 	new XmlBlasterException (this.global
>                                , ErrorCode.USER_ILLEGALARGUMENT
>                                , ""
>                                , e.getMessage());  
> All works perfectly, but it does not work for one particular case:
>    1) The client is connected to the Server A in fail safe mode with a
> specified number of retries.
>    2) The server A is stopped and restarted with another database
>    3) the client tries to connect again to the Server A but cannot
> because the database has changed and the client does
>       Not have anymore the rights to connect to the Server.
> Here the problem is that the connection of the client will never die
> even if the number of retries is exceeded.
> I fixed this problem by throwing the exception:
>                 throw new XmlBlasterException (this.global
>                         , ErrorCode.USER_SECURITY_AUTHENTICATION
>                         , ""
>                         , e.getMessage());    
> In the method I_Session.init (I_SecurityQos securityQos).
> But with this exception, when the client invokes
> I_XmlBlasterAccess.connect it never throws an exception even if the
> password is not the good one :(
> The connection is dead OK but the client cannot know that the connection
> is refused because the password is the bad one.
> So my question is "What is the good exception to throw in the method
> I_Session.init."

As you did: the ErrorCode.USER_SECURITY_AUTHENTICATION is the correct
one to throw. On the client side a check is made against this exception
when the client library (the dispatcher) tries to reconnect: If this
exception is detected the connection goes to DEAD: if you have
registered a connection listener to your I_XmlBlasterAccess, the toDead
method of this listener should be invoked.


> Thanks in advance,
> Xavier.