2017-05-13 4 views
0

Supposons que j'ai un serveur d'applications JBoss qui contient certaines données et que je souhaite écrire une petite application Java pour récupérer ces données. Ma solution ci-dessous est-elle bonne pour résoudre ce problème?Meilleure façon d'utiliser Java Application pour connecter et récupérer des données à partir du serveur d'applications

  1. Pour que le serveur d'applications peut avoir des données, je vais créer une application Java Web avec des données fictives à l'intérieur et je vais déployer cette application sur le serveur d'applications JBoss. Lorsque l'application est déployée, elle aura une URL à laquelle accéder (je pense).

  2. Créez une application Java normale pour récupérer ces données en vous connectant à l'URL de l'application Web ci-dessus. Mais ma question ici soulevant que comment connecter mon application Java à cette application Web, plus généralement je veux dire comment extraire des données d'un serveur d'applications à mon application Java? Désolé que ma question puisse sembler amateur mais espère recevoir des idées de vous;)

+0

Je ne suis pas clair. Votre serveur est-il un serveur REST avec des points de terminaison? Ou vous vous moquez d'un serveur? – Shenal

+0

Salut Shenal, je dirais que c'est juste un faux serveur exécutant localhost sur ma machine – Sonn

Répondre

0

Personnellement dans cette situation j'utiliserai EJB du client et du serveur.

Ceci vous permet d'utiliser une source de données comme une classe normale. Par exemple:

ejb.addUser(user) 

C'est donc très confortable.

Et EJB, vous pouvez créer l'application REST chaque fois que vous voulez

+0

Salut Razikus, je ne suis pas très familier avec EJB, avez-vous d'autres exemples d'exemple ou un tutoriel sur ce point. Merci d'avance ! – Sonn

+0

Donc je n'ai pas de bons tutoriels pour ça. Tout est mauvais ou vieux ou ne répond pas à mes exigences, mais quand j'arrive à la maison je vais éditer cette réponse et ajouter ici ce que je connais personnellement, et traiter de null pour configurer la persistance avec EJB avec WildFly10 – Razikus

+0

merci Razikus, espoir pour recevoir réponse bientôt de vous :) – Sonn

1

Une simple classe Java autonome peut être utilisé pour obtenir des données d'application Web via le protocole HTTP à l'aide client http fourni par Apache.You requis ci-dessous des pots Communes- codec 1.3.jar commons-httpclient-3.0 commons-logging-1.0.3

PostMethod post = new PostMethod("URL"); 
HttpClient httpclient = new HttpClient(); 
post.setRequestEntity(new InputStreamRequestEntity(new ByteArrayInputStream(s.getBytes()), s.length())); 
try 
{ 
    int result = httpclient.executeMethod(post); 
    System.out.println("Response status code: " + result); 
    System.out.println("Response body: "); 
    System.out.println(post.getResponseBodyAsString()); 
} 
finally 
{ 
    post.releaseConnection(); 
    } 
+0

merci gati ! – Sonn

1

Vous pouvez choisir entre une application ou du savon Restful, invocation de méthode à distance (RMI) ou ancien auditeur socket école, le dernier est l'option la plus facile pour une petite échelle afin ftware en termes de courbe d'apprentissage.

Si vous voulez une application de navigateur, vous devez utiliser les méthodes basées sur http qui sont REST ou SOAP.

+0

Merci Yan, je vais jeter un oeil sur ces méthodes! – Sonn

+0

"il se connecte toujours au serveur d'applications et récupère les données en continu chaque fois que les données du serveur d'application sont mises à jour" - L'implémentation est à vous, vous pouvez lever un drapeau sur la mise à jour des données du serveur X période de temps pour vérifier ce drapeau, vous ne pouvez pas lancer un appel de serveur au client à moins qu'il ne soit également un serveur. –

1

Vous pouvez utiliser les services RESTful. Vous trouverez ci-dessous l'exemple de code à appeler depuis une application Java vers un service RESTful déployé sur un serveur. com.sun.jersey possède des bibliothèques simples pour atteindre votre objectif.

import com.sun.jersey.api.client.Client; 
import com.sun.jersey.api.client.ClientResponse; 
import com.sun.jersey.api.client.WebResource; 


    Client client = Client.create(); 
    WebResource resource = client.resource("www.example.com/api"); 
    ClientResponse response = resource.accept("application/json").get(ClientResponse.class); 
    String json=response.getEntity(String.class); 

Vous pouvez consulter ci-dessous le lien pour plus d'informations:

http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/

+0

merci Tanmay! – Sonn

0

Merci à votre idée, je pense que jusqu'à maintenant j'ai une idée générale comment le faire: en utilisant le service RESTful avec la méthode POST/GET pour extraire des données du serveur d'applications. Mais je pense simplement que si je fais comme ça, la requête ne sera envoyée que lorsque j'en ferai la demande, donc si je veux avoir une connexion permanente entre mon application et le serveur d'application, cela signifie que lorsque je lance mon application, il se connecte toujours au serveur d'applications et récupère les données en permanence chaque fois que les données du serveur d'applications sont mises à jour. Est-il possible de le faire? Merci à tous!