Forum Programmation.java Tomcat, client java et SSL

Posté par  .
Étiquettes : aucune
0
13
nov.
2005
Bonjour, j'essaie de créer une servlet toute simple et un client java tout aussi simple, afin de pouvoir créer un petit echange entre client et serveur, sans l'aide d'internet explorer (ou d'un équivament), avec Tomcat. J'arrive en effet à voir une servlet toute simple via le navigateur, mais le client pose problème.
J'ai trouvé 2 versions sur le net qui pourraient marcher :

- juste un client
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class SocketTest {
public static void main(String[] args){
try{
InetAddress client = InetAddress.getByName("localhost");
System.out.println(client);
Socket connexion = new Socket("192.168.1.133",8080);
PrintWriter sortie = new PrintWriter(connexion.getOutputStream(),true);
sortie.println("get / HTTP/1.0\n");
BufferedReader entree = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
boolean continu = true;
while (continu) {
String ligne = entree.readLine();
if (ligne == null) continu = false;
else System.out.println(ligne);
}
}
catch(IOException e) { System.out.println("Errrreur : "+e);}
}
}

un client et une servlet :

Servlet :

import javax.servlet.http.HttpServlet;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Test extends HttpServlet {

ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
try{
ObjectInputStream ois = new
ObjectInputStream(request.getInputStream());
Object query = ois.readObject();
java.util.Date date =(java.util.Date) ois.readObject();
System.out.println("Query: " + query);
System.out.println("Date : " + date);
String result = "The query was received.";
ObjectOutputStream oos = new
ObjectOutputStream(response.getOutputStream());
oos.writeObject(result);
oos.flush();
oos.close();
ois.close();
}
catch(Exception e) {
e.printStackTrace();
}
}

public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
doGet(request, response);
}


}



Client :

import java.net.URL;
import java.net.*;
import java.io.*;
public class Client {

public static String HOST_IP = "http://192.168.0.3:8080/";


public Client() {
}
public static void main (String args[]){
String query = "Send me some data";
java.util.Date date = new java.util.Date();
try{
URL serverURL = null;
try{
serverURL = new
URL(HOST_IP+"TestConnection/Test");
}
catch(MalformedURLException e){
e.printStackTrace();
}
URLConnection serverConn = serverURL.openConnection();
serverConn.setDoInput(true);
serverConn.setDoOutput(true);
serverConn.setUseCaches (false);
serverConn.setRequestProperty("Content-Type",
"application/octet-stream");
ObjectOutputStream oos = new
ObjectOutputStream(serverConn.getOutputStream());
oos.writeObject(query);
oos.writeObject(date);
oos.flush();
oos.close();
ObjectInputStream ois = new
ObjectInputStream(serverConn.getInputStream());
Object result = null;
result = ois.readObject();
System.out.println(result);
ois.close();

Mais là encore ca ne marche pas. J'ai une erreur de type 503.

Je voudrais en plus à terme faire une connexion en https, j'ai déjà configuré tomcat pour utiliser le port 8443 en SSL et j'ai crée un certificat client. Je ne sais pas ce que je dois changer dans le code java par rapport à cela.
De plus, depuis que j'ai fait cela, eclipse ne veut plus démarrer tomcat (alors qu'il démarre tres bien avec startup.sh)

Est ce que quelqu'un y comprend qqch????

Merci
  • # et le web.xml ?

    Posté par  (site web personnel) . Évalué à 1.

    Ton context s'appelle bien "TestConnection" ? Et tu as bien fait la correspondance entre ta servlet et "/Test" ? Parceque dans ton premier exemple tu fais un get (d'ailleurs je mettrai plutot en maj : GET) sur "/" et dans le deuxième sur "TestConnection/Test". Et dans les deux exemples tu n'utilises pas la même adresse IP (je précise cela juste au cas où !)

    Regarde dans catalina.out si tu as des traces d'exceptions aussi.

    Sinon personnellement je ne me lancerai pas à gérer moi même mes communications avec un serveur... Il y a des masses de bibliothèques pour cela qui sont solides, bien testées et faciles à utiliser. Soit tu regardes du côté des webservices (axis, xfire) soit en plus bas niveau tu as HttpClient de Jakarta Commons : http://jakarta.apache.org/commons/httpclient/features.html (t'auras la gestion https, les cookies, les champs de formulaires, etc...)
    • [^] # Re: et le web.xml ?

      Posté par  . Évalué à 1.

      Merci pour ta réponse.
      Pour les adresses IP c'est normal, j'ai bougé entre temps!
      Pour le reste c'est juste qu'au premier exemple je me serait contenté de me connecter à jakarta. Mais dans les deux cas j'ai rien.
      Enfin, ta derniere remarque me fait un peut flipper, car malheureusement le client java fait partie du cahier des charges de mon projet. Ca te parrait si compliqué?
      • [^] # Re: et le web.xml ?

        Posté par  (site web personnel) . Évalué à 1.

        Sinon j'ai pris le temps de tester ton premier programme, et il marche très bien. Je récupères bien les données attendues. Regarde du coté de ta config réseau/firewall

        Quand à flipper... bin il ne faut pas :) Je n'ai pas dit que c'était compliqué, juste que souvent il est préferrable d'utiliser des bibliothèques qui sont faites pour cela et qui évitent de refaire les erreurs que d'autres ont déjà fait : capitalisation des savoirs.

        Mais forcément, si c'est un projet d'étude et que tu dois tout faire à la mimine bin yapuka !

        Sinon si tu cherches des exemples, un site que j'utilise régulièrement c'est JavaAlmanac : http://javaalmanac.com/cgi-bin/search/find.pl?words=urlconne(...)

        Tu peux aussi jetter un coup d'oeil au moteur de recherche de code Koders : http://www.koders.com
        • [^] # Re: et le web.xml ?

          Posté par  . Évalué à 1.

          En fait j'ai avancé entre temps. J'ai réussi à créer une connexion TCP entre client et serveur via des sockets. Le problème est maintenant d'utiliser Tomcat en tant que serveur. Quelqu'un sait il comment faire?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.