8
votes

Envoi d'un objet sur Internet

Je définis une classe, puis j'inste un objet de ce type de classe. Je souhaite envoyer cet objet à une autre application Java exécutée sur un autre ordinateur de manière transparente. Quelle est la meilleure technologie pour accomplir cela?


2 commentaires

Vous voulez dire comme - satellite, Internet ou AM / FM-Radio? Ou sinon, pouvons-nous voir la classe? Donnez-nous du code mec! \ o / n'importe quoi! Tant qu'il bouge toujours, un peu ..


BTW, vous avez demandé la meilleure technologie d'accomplir votre question et non de l'échantillon de code comment le faire. C'est pourquoi vous avez 3 réponses aux technologies à utiliser. Si vous souhaitez un exemple de code, demandez un exemple de code et vous aurez reçu un exemple de code de plusieurs personnes sur la façon de le faire en utilisant différentes technologies ou en utilisant la même chose, mais vous auriez plus à choisir.


5 Réponses :


12
votes

Vous voudrez commencer par examiner la sérialisation avec le Java Interface Serializable . Sun a un bon article sur celui-ci appelé Découvrez les secrets de l'API de sérialisation Java .

Reportez-vous au Tutoriel de sockets Java pour plus d'informations sur le transfert réellement l'objet sérialisé sur le réseau.


0 commentaires

6
votes

Il y a beaucoup de façons de faire cela. Voici quelques éléments à examiner et vous pouvez choisir celui qui fonctionnerait mieux pour votre application.

  • J2EE
  • RMI
  • sérialisation de l'objet poussant les bits sur une prise
  • Webservices

    À peu près tout cadre de communication vous permettra de pousser des objets sur un réseau d'une manière ou d'une autre. Il vous suffit de les examiner et de voir quels travaux pour votre demande. Un rapide Google devrait trouver encore plus de méthodes.


0 commentaires

11
votes

Vous pouvez créer des flux d'objets à l'aide de l'API Java et envoyez un objet sérialisable. Mais vous devrez vous déranger que ceux-ci ne se déroulent pas à travers le réseau:

sur le côté de l'expéditeur: p> xxx pré>

et sur l'extrémité de réception: p>

ServerSocket server = new ServerSocket(1234);
Socket s = server.accept();
ObjectInputStream in = new ObjectInputStream(s.getInputStream());
CustomObject objectReceived = (CustomObject) in.readObject();


0 commentaires

2
votes

A (de facto) Standard à mettre en œuvre Il s'agirait d'utiliser un service Web , par exemple en utilisant JAX-WS qui est groupé en Java 6. Voir Ce tutoriel pour un premier échantillon Java (c'est-à-dire à l'aide d'annotations). C'est assez simple et facile.

Il existe d'autres approches telles que sérialisation sur un Prise , RMI, EJBS, mais lorsque vous travaillez Sur Internet, les services Web sont une sorte de choix naturel, car ils s'appuient sur les normes existantes (savon, http) et accordent facilement avec des pare-feu (ce qui pourrait être un vrai problème pour toutes les autres solutions).


0 commentaires

2
votes

Java fournit une série d'objets (binaire) à l'aide de l'objetOutPutStream (et d'ObjectInPhatStream). Vous pouvez simplement écrire () dans le flux et le lecture de lecture () de l'autre extrémité. Tout ce que vous avez à faire pour que cela fonctionne, c'est implémenter l'interface sérialisable.

Mais plutôt que de le faire manuellement, vous êtes peut-être intéressé par la prise d'un niveau de niveau et de l'utilisation d'une méthode à distance. Avec RMI, vous pouvez appeler des méthodes sur des objets qui vivent dans une autre JVM et que toute la sérialisation et la mise en réseau se produisent sous la hotte.

et pour des raisons de complétude, il existe également une série de beans XML, si vous ne pouvez pas utiliser le format binaire. Ce format XML est très générique (lu: Verbose et laid), mais il existe certaines bibliothèques populaires (telles que Xtream) qui créent des sérialisations XML alternatives.


0 commentaires