У меня есть апплет (где пользователь входит в систему), и после нажатия кнопки входа в систему я отправляю данные для входа в свой сервлет.В моем апплете функция, отвечающая за отправку данных входа в систему сервлету и получение объекта ответа сервлета FAILS .
Моя проблема: Я неЯ знаю, почему моя функция sendObject (Object o) не работает, и я не знаю, как это исправить.Не могли бы вы помочь мне понять, что не так и почему?
Я использую Apache 7.0.Я думаю, что получение ответа (получение входного потока) от сервлета не удается, но я не знаю, почему & вход в систему работал нормально на днях, поэтому я знаю, что моя папка WEB-INF настроена нормально, и web.xml в порядке.
Моя функция (я документирую, где происходит сбой функции):
public ArrayList <Object> sendObject( Object o )
{
try
{
URL servletUrl = new URL( this.getCodeBase(), "Updater" ); // "http://localhost:8080/" );
URLConnection conn = servletUrl.openConnection();
conn.setDoInput( true );
conn.setDoOutput( true );
conn.setUseCaches( false );
conn.setRequestProperty( "Content-Type", "application/x-java-serialized-object" );
OutputStream out = conn.getOutputStream();
ObjectOutputStream objOut = new ObjectOutputStream( out );
objOut.writeObject( o );
objOut.flush();
objOut.close();
// receive result from servlet
System.out.println( "Result from applet.getCodeBase()=" + this.getCodeBase() );
// The following line is where I get the exception thrown
InputStream instr = conn.getInputStream();
ObjectInputStream inputFromServlet = new ObjectInputStream(instr);
ArrayList <Object> result = (ArrayList <Object>) inputFromServlet.readObject();
inputFromServlet.close();
instr.close();
System.out.println( "Contents of output is " );
for (int i=0; i<result.size(); i++)
{
System.out.println( "" + result.get(i) );
}
return result;
}
catch ( IOException e )
{
System.out.println( "In sendObject(): " + e );
}
catch ( Exception e )
{
System.out.println( "In sendObject(): " + e );
}
return null;
}
Вывод Java-консоли:
Результат из applet.getCodeBase() = http://localhost:8080/Updater/
В sendObject (): java.io.IOException: сервер вернул код ответа HTTP: 500 для URL: http://localhost:8080/Updater/Updater
Из журнала Apache:
20.02.2011 11:15:08 org.apache.catalina.core.ApplicationContext log
ИНФОРМАЦИЯ: ContextListener: contextInitialized ()
20/02/2011 11:15:08Org.apache.catalina.core.ApplicationContext log
ИНФОРМАЦИЯ: SessionListener: contextInitialized ()
20/02/2011 11:15:23 org.apache.catalina.core.ApplicationContext log
ИНФОРМАЦИЯ:Отметить сервлет Updater как недоступный
20.02.2011 11:15:23 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: выделить исключение для сервлета Updater
java.lang.NullPointerException
в javax.servlet.GenericServlet.getServletContext (GenericServlet.java:125)
в UpdaterServlet. (UpdaterServlet.) // ОБРАТИТЕ ВНИМАНИЕ, ЧТОБЫ УВИДЕТЬ СТРОКУ 32 ЭТОГО ФАЙЛА
в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод)
в sun.reflect.NativeConstructorAccessorImpl.newInstance (неизвестный источник)
в sun.reflectDelegatingConstructorAccessorImpl.newInstance (неизвестный источник)
в java.lang.reflect.Constructor.newInstance (неизвестный источник)
в java.lang.Class.newInstance0 (неизвестный источник)
в java.lang.Class.newInanceance(Неизвестный источник)
в org.apache.catalina.core.DefaultInstanceManager.newInstance (DefaultInstanceManager.java:119)
в org.apache.catalina.core.StandardWrapper.loadServlet (StandardWrapper.java:1048 * 1048)* в org.apache.catalina.core.StandardWrapper.allocate (StandardWrapper.java:799)
в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:135)
в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:161)
в org.apache.catalina.core.Valve.Hove.Java: 164)
в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:100)
в org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:541)
в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118)
в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:383)
в org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process (Http11Protocol.java:188)
at.at.cat.net.JIoEndpoint $ SocketProcessor.run (JIoEndpoint.java:288)
в java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (неизвестный источник)
в java.util.concurrent.ThreadPoolExrutor $ Workerun (неизвестный источник)
at java.lang.Thread.run (неизвестный источник)
localhost_access_log ...:
127.0.0.1 - - [20/ Февраль / 2011: 11: 15: 12 +1100] "GET /Updater/index.html HTTP / 1.1" 304 -
127.0.0.1 - - [20 / Feb / 2011: 11: 15: 15 +1100] "GET /Updater/UpdaterApplet.class HTTP / 1.1" 304 -
127.0.0.1 - - [20 / Feb / 2011: 11: 15: 15 +1100] "GET /Updater/ContentTree.class HTTP / 1.1" 304 -
127.0.0.1 - - [20 / Feb / 2011: 11: 15: 15 +1100] "GET / Updater / ContentMap.class HTTP / 1.1 "304 -
127.0.0.1 - - [20 / Feb / 2011: 11: 15: 15 +1100]" GET /Updater/UpdaterApplet$1.class HTTP / 1.1 "304 -
127.0.0.1 - - [20 / Feb / 2011: 11: 15: 15 +1100] "GET /Updater/SQLInterface.class HTTP / 1.1" 304 -
127.0.0.1 - - [20 / Feb / 2011: 11:15:23 +1100] "GET /Updater/ObjSerializationInterface.class HTTP / 1.1" 304 -
127.0.0.1 - - [20 / Feb / 2011: 11: 15: 23 +1100] "POST / Updater / Updater HTTP/1.1 "500 3117
Это файл UpdaterServlet.java (если вы видите выше, есть ошибка в строке 32 этого файла):
public class UpdaterServlet extends HttpServlet
{
// Class Variables:
private static final long serialVersionUID = 1L;
private ArrayList <File> localDatabases;
private ArrayList <ArrayList <Object>> input;
private ArrayList <ArrayList <Object>> output;
// Class Methods:
public UpdaterServlet()
{
getServletContext().log( "File open/created" ); // LINE 32
localDatabases = new ArrayList <File>();