Galera aqui em casa tem um servidor linux com apache, mysql, dns, samba e outras coisinhas. A minha pergunta é eu tenho um aplicativo java se( no caso um server para um chat de bate-papo) e queria colocá-lo para executar no servidor, alguém sabe como? É preciso desse tal de tomcat? ou tomdog?(brincadeirinha :D). Bom é essa minha dúvida. Vou colocar o código da classe aqui que é bem simples mesmo só para teste, para caso alguem não tenha entendido como está escrito o meu código java.
/**
* ChatSimplesServer.java
* Recebe e envia mensagens para os clientes
* @author Lucas Santos
* Criado em 08/05/2012, 23:13:39
*/
import java.io.*;
import java.net.*;
import java.util.*;
public class ChatSimplesServer {
ArrayList clientOutputStreams; // Armazena os fluxos de saídas dos clientes conectados
public static void main (String[] args) {
new ChatSimplesServer().go();
}
/**
* Cria um objeto ServerSocket em uma porta especifíca para aguarda solicitações de clientes.
* Captura o fluxo de saída( mensagens recebidas ) de cada cliente e os adiciona ao ArrayList clientOutputStream( de fluxo de saídas de clientes ).
* Cria um objeto Thread e executa a tarefa da classe interna ClientHandler( Manipulador de Clientes ).
*/
public void go() {
clientOutputStreams = new ArrayList();
try {
ServerSocket serverSock = new ServerSocket(5000); // cria um soquete de conexão na porta 5000
// loop infinito
while(true) {
Socket clientSocket = serverSock.accept(); // aguarda solicitações de clientes e retorna um objeto Socker em uma porta diferente
PrintWriter writerwriterOutput = new PrintWriter( clientSocket.getOutputStream() ); // captura fluxo de saída( mensagens recebidas pelo servidor )
clientOutputStreams.add(writerwriterOutput); // adiciona o fluxo( objeto PrintWriter ao ArrayList de fluxo de saídas de clientes )
Thread t1 = new Thread( new ClientHandler(clientSocket) );
t1.setName("Manipulador de Clientes");
t1.start();
System.out.println("Conexão Estabelecida!");
}
}
catch(Exception ex) {
ex.printStackTrace();
}
} // fim do método go()
/**
* Classe interna Runnable( tarefa do thread "Manipulador de Clientes" ) que manipula os clientes.
* Captura o fluxo de entrada e faz a leitura das mensagens no fluxo. Envia as mensagens ao método enviarATodos()
*/
public class ClientHandler implements Runnable {
BufferedReader reader;
Socket sock;
public ClientHandler(Socket clientSocket) {
try {
sock = clientSocket;
InputStreamReader streamReader = new InputStreamReader( sock.getInputStream() ); // captura o fluxo de entrada
reader = new BufferedReader(streamReader); // encadeia um objeto BufferedReader à um fluxo de entrada para uma melhor leitura
}
catch(Exception ex) {
ex.printStackTrace();
}
} // fim do construtor
public void run() {
String messagem;
try {
// Enquanto houver mensagem a ser lida.
while ( ( messagem = reader.readLine() ) != null) {
System.out.println("Lido " + messagem);
enviarATodos(messagem);
}
}
catch(Exception ex) {
ex.printStackTrace();
}
} // fim do método run()
} // fim da classe interna
/**
* Itera pela coleção de ArrayList de clientes. Escrevendo a mensagem no fluxo de saída de cada um deles.
* @param messagem Mensagem a ser enviada para o fluxo de saída, para ser exibida para os clientes
*/
public void enviarATodos( String messagem ) {
Iterator it = clientOutputStreams.iterator();
// Enquanto houver mais elementos na coleção
while( it.hasNext() ) {
try {
PrintWriter writer = (PrintWriter) it.next(); // captura o fluxo de saída do objeto cliente atual
writer.println(messagem);
writer.flush();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
} // fim do método enviarATodos()
}
Obs: Quem já leu o livro UseACabeça Java deve lembrar desse código( aplicativo de bate-papo simples e ridículo)