さて、私がすでに数日間立ち往生している問題は、Tomcat が私のアプリケーションを実行しないということです。これは、Tomcat とサーバー プログラミング全体との初めての出会いなので、純粋に私のせいである可能性が最も高いです。しかし、数日で自分で打ち負かすことができなくなったので、ここに質問を投稿することにしました.
かなり多くの異なるセットアップを実行しようとしましたが、今は最も簡単なセットアップであり、まだ理解できません. それで、私はインストールしました:Eclipse IDE 1.5.0(Eclipseプラットフォーム4.2.0)、WST 3.4.1、Eclipseを介してインストールされたTomcat 7.0.12(7.0.30も試しました)。
Tomcat サーバーが Eclipse で正常に構成されているので、実行すると意図したとおりに動作します。
しかし、サーバーソケットに関するオラクルのガイドから取得したこの簡単なコードを取得しました。
import java.net.*;
import java.io.*;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
public class KnockKnockServer {
private static final Logger logger = Logger.getRootLogger();
public static void main(String[] args) throws IOException {
BasicConfigurator.configure();
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(4444);
logger.debug("Socket opened");
System.err.println("Port opened");
} catch (IOException e) {
logger.debug("Could not listen on port: 4444.");
System.err.println("Port not opened");
System.exit(1);
}
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
logger.info("socket accepted");
} catch (IOException e) {
logger.info("Accept failed.");
System.exit(1);
}
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
String inputLine, outputLine;
KnockKnockProtocol kkp = new KnockKnockProtocol();
outputLine = kkp.processInput(null);
out.println(outputLine);
while ((inputLine = in.readLine()) != null) {
outputLine = kkp.processInput(inputLine);
out.println(outputLine);
if (outputLine.equals("Bye."))
break;
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
}
「Run As -> Run on server」を起動しても機能しません。WARに追加して展開しようとしましたが、同じ結果が得られます-なし。つまり、別のクライアントアプリを使用して(別のEclipseインスタンスから)接続することも、動作を示すメッセージを生成することもできません(Tomcatによって生成されたログにのみアクセスします)。ご覧のとおり、コードに log4j を追加して、コードがサーバー上で実際に実行されていることを証明するメッセージを確認しました (最初は System.err と System.out だけでした)。これをコンソール出力とファイル出力の両方に設定してみました。
繰り返しますが、サーバー自体は意図したとおりに実行されます。ブラウザーからアクセスしたり、マネージャー アプリを開いたり、アプリを展開/展開解除したりできます。
質問は次のとおりです。私は何を間違っていますか? 原始的な間違い/元に戻したステップ/私が作ったものがあるかもしれないと思いますが、Googleの助けを借りて2日間戦ってもそれを理解できませんでした.
助けていただければ幸いです。
更新:どうもありがとうございました! 私が疑ったように-愚かな私:)なぜTomcatでこの混乱を始めたのかわかりませんが、ええ、Run as Applicationは正常に動作します. これらの即時の回答により、多くの時間を節約できました。どうもありがとうございました。