:Tomcatのソケットに接続していますか?私は、Tomcat上で実行しているサーブレットにスタンドアロンアプレットから接続しようとしている
サーブレット
public void init(ServletConfig config) throws ServletException {
super.init(config);
// Start a daemon thread
try {
daemonThread = new Daemon(this);
daemonThread.start();
}
catch (Exception e) {
}
}
protected int getSocketPort() {
return 8080;
}
public void handleClient(Socket client){
new ScribbleThread(this, client).start();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
StringBuffer sb = new StringBuffer();
sb.append("<html><body bgcolor=pink text=red>");
sb.append("<h1 align=center>RUNNING</h1><hr>");
sb.append("</body></html>");
out.println(sb);
out.close();
}
}
サーブレットのinit()
はこれを作成します。
class Daemon extends Thread {
private ServerSocket serverSocket;
private SocketServlet servlet;
public Daemon(SocketServlet servlet) {
this.servlet = servlet;
}
public void run() {
try {
// Create a server socket to accept connections
serverSocket = new ServerSocket(servlet.getSocketPort());
}
catch (Exception e) {
return;
}
try {
while (true) {
try {
servlet.handleClient(serverSocket.accept());
}
catch (IOException ioe) {
}
}
}
私はこれに日食で展開していますTomCat。私の質問は、私のアプレットがどのソケットにソケットを作る必要があるのでしょうか? i visit http://localhost:8080/scrabServ/connect
私はdoGet()
から 'RUNNING'メッセージが表示されるので、それがポイントする必要があるのですか?
アプレット:
public static String testConnection(){
InputStream in = null;
try {
// Make socket connection to servlet
String servlet = new String("localhost/scrabServ/connect");
Socket socket = new Socket(servlet, 8080);
これは私に与える:new Socket(servlet, 8080)
ラインへ
Exception in testConnection()java.net.UnknownHostException: localhost/scrabServ/connect
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at scribble.Scribble.testConnection(Scribble.java:41)
at scribble.Scribble.main(Scribble.java:28)
とポイント。
私は、URLConnectionはシングルリクエスト、シングルレスポンススキームであると読んでいます。私は常時接続が必要です。 GETの意味を説明できますか? GETを使用して文字列 "Test"をサーブレットのinputStreamに転送するにはどうすればよいですか? – Sbram
@Sbram私はちょっと答えを広げました。 – Marcelo
ありがとうございました。私はサーブレットに複数のクライアントを接続させて、相互にやりとりし、それぞれのアクションを通知できるようにする必要があります。 – Sbram