OVH Cloud OVH Cloud

Performance Classe Webserver ?

10 réponses
Avatar
Zouplaz
Bonjour, dans un blog j'ai trouvé ceci :

public class Main{
...
static WebServer server;
public static void main(String[] args) {
....
int port = 8080;
server = new WebServer(port);
server.addHandler("$default", new Main());
server.start();
}
...
}

Ca m'intéresse parce qu'il se peut que je sois amené à proposer un
certain nombre de méthodes accessibles via xml-rpc à un système
complètement différent de java.

La question que je me pose c'est à propos des performances : ça donne
quoi la classe WebServer de ce point de vue là ?

Parce qu'en terme de simplicité c'est vraiment bien dites...

Merci

10 réponses

Avatar
Insitu
Bonsoir,
elle provient de quelle paquetage la classe WebServer ?

insitu.
Avatar
Zouplaz
Bonsoir,
elle provient de quelle paquetage la classe WebServer ?

insitu.


Je ne sais pas car l'auteur original ne le spécifie pas.
Mais en cherchant j'ai trouvé quelque chose ici :
http://www.stylusstudio.com/api/xmlrpc/org/apache/xmlrpc/WebServer.htm

qui semble coller

Avatar
Insitu
Ce serait bien d'être sur de l'origine du truc pour pouvoir comparer les perfromances
et les implantations.
Je ne sais pas quel est l'objectif final mais, IMHO, le goulot
d'etranglement se situe rarement dans la manière dont le serveur
fonctionne, sauf incompétence manifeste. La sérialisation
est très couteuse en particulier en XML, à moins d'utiliser des
encodages binaires (il me semble qu'il y a un truc de ce genre
la pour encoder les xml-rpc en utilisant la norme BER pour
une grammaire ASN.1).
Bref, ya du boulet pour répondre de manière pertinente à la question...

insitu.
Avatar
Zouplaz
Ce serait bien d'être sur de l'origine du truc pour pouvoir comparer les perfromances
et les implantations.


Bon, mais on peut partir sur l'idée d'utiliser la librarie xml-rpc d'apache

Je ne sais pas quel est l'objectif final mais, IMHO, le goulot
d'etranglement se situe rarement dans la manière dont le serveur
fonctionne, sauf incompétence manifeste. La sérialisation
est très couteuse en particulier en XML, à moins d'utiliser des
encodages binaires (il me semble qu'il y a un truc de ce genre
la pour encoder les xml-rpc en utilisant la norme BER pour
une grammaire ASN.1).


L'idée c'est de fournir l'accès, via xml-rpc, à un service java capable
d'exploiter Lucene. Je me posais juste la question de savoir combien de
requêtes simultanées un micro serveur http comme celui là (ou un autre)
serait capable d'encaisser...

Avatar
TestMan
Bonsoir,

Si ton but est de faire des webservice accessibles depuis l'extérieur,
alors passe directement à JAX-WS 2.0:

http://java.sun.com/javaee/5/docs/tutorial/doc/JAXWS3.html

Par exemple :

package pipo;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class MonSuperService {
public int add(int a, int b) {
return a+b;
}
}

Avantage pour toi, ton code est souple : il se déploie automatiquement
dans tout serveur Java EE 5 , mais aussi dans mustang (le futur Java SE 6 ).

Un exemple de classe pour le publier sous Java SE 6 :

package pipo;

import javax.xml.ws.Endpoint;

public class Application {
public static void main(String[] args) {
MonSuperService service = new MonSuperService();
Endpoint endpoint =
Endpoint.publish("http://localhost:8080/super", service);
}
}

Ainsi ton conde s'adapter à tes futurs besoins de performances ...

A+

TM

Bonjour, dans un blog j'ai trouvé ceci :

public class Main{
...
static WebServer server;
public static void main(String[] args) {
....
int port = 8080;
server = new WebServer(port);
server.addHandler("$default", new Main());
server.start();
}
...
}

Ca m'intéresse parce qu'il se peut que je sois amené à proposer un
certain nombre de méthodes accessibles via xml-rpc à un système
complètement différent de java.

La question que je me pose c'est à propos des performances : ça donne
quoi la classe WebServer de ce point de vue là ?

Parce qu'en terme de simplicité c'est vraiment bien dites...

Merci


Avatar
Zouplaz
Bonsoir,

Si ton but est de faire des webservice accessibles depuis l'extérieur,
alors passe directement à JAX-WS 2.0:

http://java.sun.com/javaee/5/docs/tutorial/doc/JAXWS3.html

Par exemple :

package pipo;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class MonSuperService {
public int add(int a, int b) {
return a+b;
}
}

Avantage pour toi, ton code est souple : il se déploie automatiquement
dans tout serveur Java EE 5 , mais aussi dans mustang (le futur Java SE
6 ).

Un exemple de classe pour le publier sous Java SE 6 :

package pipo;

import javax.xml.ws.Endpoint;

public class Application {
public static void main(String[] args) {
MonSuperService service = new MonSuperService();
Endpoint endpoint =
Endpoint.publish("http://localhost:8080/super", service);
}
}

Ainsi ton conde s'adapter à tes futurs besoins de performances ...



Merci pour ta réponse c'est une piste intéressante mais ça signifie que
je suis obligé de passer par un serveur J2EE style Tomcat.

Ce que je recherche serait une solution plus légère qui fonctionnerait
de manière autonome - Est-ce possible ? Est-ce souhaitable ??

Avatar
alexandre cartapanis
Bonsoir,

Si ton but est de faire des webservice accessibles depuis l'extérieu r,
alors passe directement à JAX-WS 2.0:

http://java.sun.com/javaee/5/docs/tutorial/doc/JAXWS3.html

Par exemple :

package pipo;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class MonSuperService {
public int add(int a, int b) {
return a+b;
}
}

Avantage pour toi, ton code est souple : il se déploie automatiqueme nt
dans tout serveur Java EE 5 , mais aussi dans mustang (le futur Java
SE 6 ).

Un exemple de classe pour le publier sous Java SE 6 :

package pipo;

import javax.xml.ws.Endpoint;

public class Application {
public static void main(String[] args) {
MonSuperService service = new MonSuperService();
Endpoint endpoint =
Endpoint.publish("http://localhost:8080/super", service);
}
}

Ainsi ton conde s'adapter à tes futurs besoins de performances ...



Merci pour ta réponse c'est une piste intéressante mais ça signif ie que
je suis obligé de passer par un serveur J2EE style Tomcat.

Ce que je recherche serait une solution plus légère qui fonctionner ait
de manière autonome - Est-ce possible ? Est-ce souhaitable ??


intègre Jetty, c'est un serveur java/jsp léger et rapide.

--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email
Gsm. 06 72 07 51 55

Macymed SARL - 9 bvd Kraëmer 13014 Marseille France
Tél. 04 91 48 31 58 - Fax. 04 91 02 36 47
Web http://www.macymed.fr - Email


Avatar
jlp
Voir aussi Winstone ( Servlet 2.4/JSP 2.0) tres léger ( 400 ko)
"alexandre cartapanis" a écrit dans le
message de news:446b258f$0$20176$
Bonsoir,

Si ton but est de faire des webservice accessibles depuis l'extérieur,
alors passe directement à JAX-WS 2.0:

http://java.sun.com/javaee/5/docs/tutorial/doc/JAXWS3.html

Par exemple :

package pipo;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class MonSuperService {
public int add(int a, int b) {
return a+b;
}
}

Avantage pour toi, ton code est souple : il se déploie automatiquement
dans tout serveur Java EE 5 , mais aussi dans mustang (le futur Java
SE 6 ).

Un exemple de classe pour le publier sous Java SE 6 :

package pipo;

import javax.xml.ws.Endpoint;

public class Application {
public static void main(String[] args) {
MonSuperService service = new MonSuperService();
Endpoint endpoint >> Endpoint.publish("http://localhost:8080/super", service);
}
}

Ainsi ton conde s'adapter à tes futurs besoins de performances ...



Merci pour ta réponse c'est une piste intéressante mais ça signifie que
je suis obligé de passer par un serveur J2EE style Tomcat.

Ce que je recherche serait une solution plus légère qui fonctionnerait
de manière autonome - Est-ce possible ? Est-ce souhaitable ??


intègre Jetty, c'est un serveur java/jsp léger et rapide.

--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email
Gsm. 06 72 07 51 55

Macymed SARL - 9 bvd Kraëmer 13014 Marseille France
Tél. 04 91 48 31 58 - Fax. 04 91 02 36 47
Web http://www.macymed.fr - Email


Avatar
Zouplaz


Ce que je recherche serait une solution plus légère qui fonctionnerait
de manière autonome - Est-ce possible ? Est-ce souhaitable ??


intègre Jetty, c'est un serveur java/jsp léger et rapide.



Tiens, c'est une bonne idée ça ! Merci


Avatar
TestMan
Bonsoir,

Si ton but est de faire des webservice accessibles depuis l'extérieur,
alors passe directement à JAX-WS 2.0:

http://java.sun.com/javaee/5/docs/tutorial/doc/JAXWS3.html

Par exemple :

package pipo;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class MonSuperService {
public int add(int a, int b) {
return a+b;
}
}

Avantage pour toi, ton code est souple : il se déploie automatiquement
dans tout serveur Java EE 5 , mais aussi dans mustang (le futur Java
SE 6 ).

Un exemple de classe pour le publier sous Java SE 6 :

package pipo;

import javax.xml.ws.Endpoint;

public class Application {
public static void main(String[] args) {
MonSuperService service = new MonSuperService();
Endpoint endpoint =
Endpoint.publish("http://localhost:8080/super", service);
}
}

Ainsi ton conde s'adapter à tes futurs besoins de performances ...



Merci pour ta réponse c'est une piste intéressante mais ça signifie que
je suis obligé de passer par un serveur J2EE style Tomcat.

Ce que je recherche serait une solution plus légère qui fonctionnerait
de manière autonome - Est-ce possible ? Est-ce souhaitable ??


Bonjour,

Non pas du tout, Mustang (le 1.6) intégre déjà un connecteur web !
Téléchages le 1.6 et teste les deux classes que je t'es écrites ;-)

A+

TM