2016-12-18 4 views
0

Я новичок в программировании сервлетов/серверов JAVA. Я пытаюсь заставить сервлет вызвать метод getInstance() экземпляра класса с сервера. Я вставил ниже кода сервера, который регистрирует класс клиента и создает его. Это работает без ошибок.Servlet, вызывающий метод класса на другом сервере

public class RelevanceClient { 

private static RelevanceClient client; 
public final static String LOGSOURCE = "RELEVANCECLIENT"; 

private HistogramClient histogramClient; 
private UserClient userClient; 
private LoadBalancer loadBalancer = null; 

static { 
    try { 
     SystemRegistrar.register(); 
    } 
    catch (Exception e) { 
     Object args[] = {e}; 
     Log.logException(e); 
     Log.logMessage(LOGSOURCE, Log.ERROR, 
      RelevanceClientRes.get(RelevanceClientRes.FAILED_TO_REGISTER, args)); 
     client = null; 
    } 
} 

public static void registerClient(RelevanceClient _client) { client = _client; } 

/** 
* Returns instance of RelevanceClient 
*/ 
public static RelevanceClient getInstance() throws RelevanceClientException { 
    if (client == null) 
     throw new RelevanceClientException(
      RelevanceClientRes.get(RelevanceClientRes.CLIENT_INIT_ERR)); 
    return client; 
} 

Теперь у меня есть код сервлета, вызывающий getInstance(), чтобы получить класс. Я получаю зарегистрированную ошибку класса клиента, даже если у меня нет ошибки при регистрации клиента на сервере.

public class Relevance extends HttpServlet { 

private final static String P_CMD = "cmd"; 

public final static String SERVLET_INFO = "eSelf relevance servlet"; 

ServletConfig config = null; 
RelevanceClient client = null; 

private Hashtable commandMap = new Hashtable(); 

public void init(ServletConfig config) throws ServletException { 
    super.init(config); 
    this.config = config; 
    try { 
     client = RelevanceClient.getInstance(); 
    } catch(Exception rootCause) { 
     client = null; 
     throw new ServletException(ServletRes.get(ServletRes.RCLIENT_INIT_ERR), rootCause); 
    } 
    Log.logMessage(Log.INFO, ServletRes.get(ServletRes.SERVLET_INIT)); 
} 

Является ли я чем-то неправильным или незаконным? Я ценю любую подсказку. Полное сообщение об ошибке приведено ниже.

javax.servlet.ServletException: Error obtaining relevance client 
eself.tool.servlet.Relevance.init(Unknown Source) 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
java.lang.Thread.run(Thread.java:745) 

первопричиной:

eself.client.relevance.RelevanceClientException: Relevance client was not registered successfully 
eself.client.relevance.RelevanceClient.getInstance(Unknown Source) 
eself.tool.servlet.Relevance.init(Unknown Source) 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
java.lang.Thread.run(Thread.java:745) 
+0

Заполните полное сообщение об ошибке. – PeterMmm

+1

Вы никогда (?) Не назовете 'registerClient()'. Поэтому 'RelevanceClient.client' всегда' null'. – PeterMmm

+0

@PeterMmm, я обновил вопрос с сообщением об ошибке –

ответ

0

RelevanceClient.client всегда нуль в коде. Таким образом, инициализация завершится неудачно.

Смежные вопросы