Applet – comunicação com o servidor, como posso fazer isso?

Eu tenho um applet e devo enviar uma solicitação para um aplicativo da web para obter dados do servidor que está em um database. Eu estou trabalhando com objects e é muito útil que o servidor me responda com objects !!

Como um applet pode se comunicar com um servidor?

Eu acho que o método de serviços web, RMI e … me faz feliz, mas qual é o melhor e confiável?

Desde que seja apenas o seu applet a comunicar com o servidor, pode utilizar um object serializado. Você só precisa manter a mesma versão da class de object no jar do applet e no servidor. Não é o caminho mais aberto ou expansível, mas é rápido tanto quanto tempo de desenvolvimento e bastante sólido.

Aqui está um exemplo.

Instancie a conexão com o servlet

URL servletURL = new URL(""); URLConnection servletConnect = servletURL.openConnection(); servletConnect.setDoOutput(true); // to allow us to write to the URL servletConnect.setUseCaches(false); // Write the message to the servlet and not from the browser's cache servletConnect.setRequestProperty("Content-Type","application/x-java-serialized-object"); 

Obtenha o stream de saída e escreva seu object

 MyCustomObject myObject = new MyCustomObject() ObjectOutputStream outputToServlet; outputToServlet = new ObjectOutputStream(servletConnection.getOutputStream()); outputToServlet.writeObject(myObject); outputToServlet.flush(); //Cleanup outputToServlet.close(); 

Agora leia na resposta

 ObjectInputStream in = new ObjectInputStream(servletConnection.getInputStream()); MyRespObject myrespObj; try { myrespObj= (MyRespObject) in.readObject(); } catch (ClassNotFoundException e1) { e1.printStackTrace(); } in.close(); 

Em seu servlet

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { MyRespObject myrespObj= processSomething(request); response.reset(); response.setHeader("Content-Type", "application/x-java-serialized-object"); ObjectOutputStream outputToApplet; outputToApplet = new ObjectOutputStream(response.getOutputStream()); outputToApplet.writeObject(myrespObj); outputToApplet.flush(); outputToApplet.close(); } private MyRespObject processSomething(HttpServletRequest request) { ObjectInputStream inputFromApplet = new ObjectInputStream(request.getInputStream()); MyCustomObject myObject = (MyCustomObject) inputFromApplet.readObject(); //Do Something with the object you just passed MyRespObject myrespObj= new MyRespObject(); return myrespObj; } 

Basta lembrar que os dois Objetos que você está passando precisam implementar serializáveis

  public Class MyCustomObject implements java.io.Serializable {