-1

私は2つのWebアプリケーション、GPSClientとRuralCloudをTomcatサーバーにデプロイしており、それぞれ2つのサーブレットSendDataとRecieveDataがあります。SendData から RecieveData にオブジェクトを送信したい。requestDispature を使用していますが、うまくいきません。

これは、NullPointerException をスローしているサーブレット 1 のコードです。

@WebServlet("/SendData")
public class SendData extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public SendData() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    PrintWriter out = response.getWriter();

    String userID = request.getParameter("userID");
    String latitude = request.getParameter("latitude");
    String longitude = request.getParameter("longitude");

    GPSData d = new GPSData(userID, Double.parseDouble(latitude),
            Double.parseDouble(longitude));

    request.setAttribute("data", d);

    ServletContext context = getServletContext().getContext("/RuralCloud");
    RequestDispatcher rd = context.getRequestDispatcher("/RecieveData");
    rd.forward(request, response);


}

}

これはエラーログです

java.lang.NullPointerException
at com.gps.client.SendData.doPost(SendData.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

問題を解決する方法はありますか。事前にサンクス。

4

2 に答える 2

1

2 つの Web アプリケーションは完全に分離されたクラスローダーを使用しており、さまざまなアプリケーション コンテキストで互いのオブジェクトにアクセスすることはできないことに注意する必要があります。これらには共通点がないと仮定してください。

これにより、http を介した 2 つのアプリケーション間の通信が可能になります。実際、私はその手法を非常に好みます。はい、サーバー レベルでできることは他にもありますが、その説明はここでの単一の回答の範囲をはるかに超えています。

あなたの質問に関連して、スタックトレースは NullpointerException を指してat com.gps.client.SendData.doPost(SendData.java:60)いますが、その行が何であるかはわかりません。おそらくそのメソッドの最後の2行の1つであり、この情報を今追加しても役に立ちませんが(アプローチが正しくないため)、通常、これらのポインターを質問に追加して、より多くの(そしてより迅速に)取得したいと考えています。ヘルプ。NPE の場所も、間違っていた仮定を示している可能性があります...

したがって、一般的には、他のメカニズム (@Szarpul が示唆する http など) を使用します。あなたのアプローチがうまくいかない理由を指摘できたことを願っています。

于 2015-01-13T14:06:35.577 に答える
0

データを送信するサーブレットを作成するのはなぜですか? doPost メソッドなどのサーブレットでデータを受信する場合は、HTTP クライアントを実装し、POST リクエストをサーブレットに送信する必要があります。投稿リクエストを送信する方法の例を次に示します: JAVA POST

于 2015-01-13T13:54:15.133 に答える