java.rmi.server.ExportException: un objet distant implémente une interface distante illégale
Sep 22 2020
Obtenir cette erreur:
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
Pour ce 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<>());
}
Réponses
2 TomerShetah Sep 23 2020 at 06:00
Comme le mentionne guice dans son exception, il s'agit d'une exception imbriquée. L'exception interne est:
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)
Je suppose que vous l'emportez java.rmi.Remote. Si tel est le cas, je vais donc citer la méthode distante illégale en java :
Toutes les méthodes d'une interface RMI Remote doivent déclarer RemoteException dans leur clause throws.
Cela signifie que vous devez ajouter throws RemoteExceptionà la déclaration de toutes les méthodes de l'interface qui s'étend Remote. C'est probablement CustomCodeRepository.