java.rmi.server.ExportException: Remote-Objekt implementiert unzulässige Remote-Schnittstelle
Sep 22 2020
Diesen Fehler erhalten:
1) Error injecting constructor, java.rmi.server.ExportException: remote object implements illegal remote interface; nested exception is:
java.lang.IllegalArgumentException: illegal remote method encountered: public abstract java.util.List com.mycompany.repository.CustomCodeRepository.getCustomCodeEntity(java.lang.String,java.lang.String,java.lang.String)
at com.mycompany.repository.impl.CustomCodeRepositoryImpl.<init>(CustomCodeRepositoryImpl.java:63)
while locating com.mycompany.repository.impl.CustomCodeRepositoryImpl
at com.mycompany.guice.GuiceConfigModule.configure(GuiceConfigModule.java:79)
while locating com.mycompany.repository.CustomCodeRepository
for field at com.mycompany.resource.ServerResource.customCodeRepository(ServerResource.java:53)
while locating com.mycompany.resource.ServerResource
Für diesen Code:
@Override
protected void configure() {
bind(EntityRepository.class).to(EntityRepositoryImpl.class).in(Scopes.SINGLETON);
bind(CustomCodeRepository.class).to(CustomCodeRepositoryImpl.class).in(Scopes.SINGLETON);
}
public class CustomCodeRepositoryImpl extends UnicastRemoteObject
implements CustomCodeRepository {
@Inject
@Named("xodusRoot")
String xodusRoot;
@Inject
@Named("masterStore")
String masterStore;
@Inject
EntityRepository entityRepository;
public CustomCodeRepositoryImpl() throws RemoteException {
}
@Override
public String createCustomCode(String appId, String namespace, String customCodeName, String description, Long timeout, InputStream jar) {
}
@Override
public List<Map<String, Comparable>> getCustomCodeEntity(String appId, String namespace, String customCodeName) {
return entityRepository.getEntity(
appId,
namespace,
Constants.ENTITYSTORE_CUSTOMCODE,
Constants.CUSTOMCODE_NAME,
customCodeName,
new ArrayList<>());
}
Antworten
2 TomerShetah Sep 23 2020 at 06:00
Wie in seiner Ausnahme erwähnt, handelt es sich um eine verschachtelte Ausnahme. Die innere Ausnahme ist:
java.lang.IllegalArgumentException: illegal remote method encountered: public abstract java.util.List com.mycompany.repository.CustomCodeRepository.getCustomCodeEntity(java.lang.String,java.lang.String,java.lang.String)
Ich würde vermuten, dass Sie überschreiben java.rmi.Remote. Wenn dies der Fall ist, zitiere ich aus der illegalen Remote-Methode in Java :
Alle Methoden auf einer RMI-Remote-Schnittstelle müssen RemoteException in ihrer throw-Klausel deklarieren.
Das bedeutet, dass Sie throws RemoteExceptionder Deklaration aller Methoden in der erweiterten Schnittstelle hinzufügen müssen Remote. Das ist wahrscheinlich CustomCodeRepository.