java.rmi.MarshalException: шифрование - PullRequest
0 голосов
/ 12 ноября 2011

Я получаю эту ошибку, когда пытаюсь вызвать удаленный интерфейс:

java.rmi.MarshalException: error marshalling arguments; nested exception is:    java.io.NotSerializableException: javax.crypto.Cipher

Это интерфейсы:

public interface Operacion extends Remote{

 String operacionDesencripta(byte ciphertext[],Key key,Cipher cipher)
        throws RemoteException;

}

, и я вызываю еекак это:

rmiServidor.operacionDesencripta(ciphertext,key,cipher);

После обработки всех этих данных

1 Ответ

2 голосов
/ 12 ноября 2011

В чем конкретно вопрос?Ошибка довольно очевидна - вы не можете сериализовать тип Cipher.Если вы проверите Javadoc для этого типа, он скажет вам:

Чтобы создать объект Cipher, приложение вызывает метод getInstance Cipher и передает ему имя запрошенного преобразования.,При желании можно указать имя провайдера.

Таким образом, вместо прямой передачи Cipher можно вместо этого передать строку преобразования (String является сериализуемым и, следовательно, «удаленным»).

...