J'ai besoin d'aide pour utiliser guice. J'ai mon projet ici: https://github.com/Romain-P/kalibro/blob/master/realm/src/org/kalibro/core/Main.javaGoogle guice: aider à injecter
Mon problème: J'ai besoin de remplacer dans ce Main.java les 3 injecteurs, avec seulement 1 injecteur. L'application est séparée: LoginServer et WorldServers. Vous avez seulement 1 realmServer, et certains serveurs WorldServer comme vous le souhaitez.
Maintenant, je viens de créer realmServer. Dans ce que vous avez: - RealmManager (qui gère les joueurs < -> loginserver) - ExchangeManager (qui gère des mondes < -> loginserver)
Ils acceptent des connexions, et ils créent des clients, avec Netty. RealmManager & ExchangeManager étend NetworkService. NetworkService est une classe abstractClass, utile pour créer tous les gestionnaires comme vous le souhaitez. Imaginez si je veux plus tard créer shopManager, qui parle avec webServer.
S'il vous plaît voir le code: https://github.com/Romain-P/kalibro/tree/master/realm/src/org/kalibro/network/netty
Maintenant, mon Main.java a 3 injecteurs, mais je dois avoir juste 1. qui fonctionne! mais je pense que ce n'est pas nettoyé, donc j'ai juste besoin d'un injecteur.
Main.java
[...]
Injector exchangeInjector = Guice.createInjector(new ExchangeModule());
Injector realmInjector = Guice.createInjector(new RealmModule());
try {
log.info("initializing exchange");
exchangeInjector.getInstance(ExchangeManager.class).run(config.getExchangePort());
log.info("initializing server");
realmInjector.getInstance(RealmManager.class).run(config.getRealmPort());
} catch(Exception e) {
log.error("Can't start application", +e.getMessage());
System.exit(1);
}
Modules:
public class RealmModule extends AbstractModule {
protected void configure() {
install(new NetworkModule());
bind(NetworkService.class).to(RealmManager.class);
}
}
//the same for ExchangeModule..
Avez-vous besoin de se lier à la fois à 'NetworkService'? Vous résolvez les instances en utilisant les classes concrètes - pouvez-vous vous contenter de simplement vous lier aux classes concrètes, par ex. 'bind (RealmManager.class);', dans le module? Ensuite, les deux modules peuvent être créés dans un seul injecteur. –
modifier * attente s'il vous plaît –
il est impossible, parce que je @Inject NETWORKSERVICE à networkServiceHandler, et il sera ne sais pas ce gestionnaire utiliser –