Как передать экземпляр Java-объекта из Python в Java-приложение - PullRequest
0 голосов
/ 17 мая 2018

У меня есть Java-приложение, которое имеет прослушиватель сокетов и прослушивает события TCP через определенный порт, скажем, 6500. Когда данные получены, они типизируют их на конкретный объект Java - EventObj, который имеет определенные поля.Например - EventObj.java

public class EventObj {
   private String firstName;
   private String lastName ;
   // setters and getters 
}

Вот фрагмент кода, который получает данные через сокет и типизирует их EventObj -

    Socket clientSocket = null;
    while (keepRunning) {
      try {
            clientSocket = null;
            //wait for an incoming call
            clientSocket = serverSocket.accept();
      } catch (IOException e) {
        // log error
      }

      if(clientSocket == null){
         continue;
      }

      ObjectOutputStream objectOutputStream = null;
      ObjectInputStream objectInputStream = null;
      EventObj event = null;
      try{
            objectInputStream = new 
            ObjectInputStream(clientSocket.getInputStream());
            objectOutputStream = new ObjectOutputStream(clientSocket.getOutputStream());

            event = (EventObj) objectInputStream.readObject();
            /// other parts of the code
      }
      //// other parts of the code
  }

Если бы мне нужно было отправить сообщение черезсоединение с сокетом из Python, как я могу создать экземпляр EventObj в Python и отправить его в мое приложение Java, чтобы сериализация не завершилась.

Вот мой код Python -

#!/usr/bin/env python

import socket

HOST = "localhost"
PORT = 6502

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))

sock.sendall("I NEED TO SEND MY SERIALIZED OBJECT SO JAVA UNDERSTANDS IT")

Любой совет?

1 Ответ

0 голосов
/ 17 мая 2018

Вот спецификация, если вы действительно хотите ее реализовать ...

https://docs.oracle.com/javase/8/docs/platform/serialization/spec/protocol.html

Я бы рекомендовал не использовать сериализацию объектов Java.

JSON isязык для такого рода вещей.

В Python есть пакет json В Java есть ObjectMapper Джексона для чтения json.

Если вы действительно хотите стать фантазером, вы можете получить первый уровеньсериализация должна быть именем свойства бина и рефлексивно установить значение:

Использование отражения для установки свойства объекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...