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. Regards Michele > Thanks in advance, > > Xavier. >
