Я новичок в программировании сервлетов/серверов 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)
Заполните полное сообщение об ошибке. – PeterMmm
Вы никогда (?) Не назовете 'registerClient()'. Поэтому 'RelevanceClient.client' всегда' null'. – PeterMmm
@PeterMmm, я обновил вопрос с сообщением об ошибке –