Unable to Register the MobiLink Server

Problem: Starting Unwired Server causes registration problems for Messaging Server.

The Unwired Server error log displays an entry similar to:
2010-07-27 09:37:31.205 ERROR Mobilink Thread-146 
    [com.sybase.ml.sup.Logger] [-10002] Cache database server or ODBC 
    error: ODBC: [Sybase][ODBC Driver][SQL Anywhere]Index 'ml_server UNIQUE 
    (name)' for table 'ml_server' would not be unique (ODBC State = 23000, 
    Native error code = -196) 
2010-07-27 09:37:31.205 ERROR Mobilink Thread-146 
    [com.sybase.ml.sup.Logger] [-10294] Unable to register the MobiLink 
    server with name '<serverName>'

Explanation: When Unwired Server runs in a shared server farm, every member in the farm must have a unique registration through the cache database table ml_server. If Unwired Server is not stopped gracefully, the row for the server is not removed from the ml_server table. This could happen if Unwired Server is shut down abruptly while a mobile client is synchronizing. When Unwired Server is restarted, the Messaging Server registration is not unique, and cannot be completed.

Solution:
  1. Connect to the cache database using dbisql.
  2. Manually remove the row corresponding to your server. An example row:

    server_id,name,version,connection_info,instance_key,start_time,liveness 9,'ML Server name','100.0','http(host=<supHostName>;port=2480)',0xad53f35e04086778623aa56f32728a313f1972b68b8363c86b501144af7b3206,'2010-07-27 14:54:10.298','2010-07-27 18:29:13.866' 
    
  3. If the problem persists, try restarting Unwired Server.