Search the FirstSpirit Knowledge Base
Ich habe die folgende Module.xml:
<!DOCTYPE module SYSTEM "module.dtd">
<module>
...
<components>
<!-- server-wide resources -->
<library>
<name>My Library</name>
<resources>
<resource>lib/myLib.jar</resource>
</resources>
</library>
<project-app>
<name>My ProjectApp</name>
<class>my.package.MyProjectApp</class>
</project-app>
<web-app>
<name>My WebClient Extensions</name>
<class>my.package.MyWebApp</class>
<web-xml>web.xml</web-xml>
<web-resources>
<resource>lib/myLib.jar</resource>
</web-resources>
</web-app>
<service>
<name>My Service</name>
<class>my.package.MyServiceImpl</class>
</service>
...
</components>
</module>
und meine Implemtierung MyServiceImpl liefert:
@Override
@SuppressWarnings("rawtypes")
public Class<? extends ServiceProxy> getProxyClass() {
return MyServiceProxy.class;
}
Wenn ich nun im JavaClient den Service hole funktioniert alles wunderbar:
ServicesBroker servicesBroker = context.requireSpecialist(ServicesBroker.TYPE);
MyService myService = servicesBroker.getService(MyService.class);
Hole ich allerdings den Service per ToolbarContext:
@Override
public void execute(ToolbarContext context) {
ServicesBroker servicesBroker = context.requireSpecialist(ServicesBroker.TYPE);
MyService myService = servicesBroker.getService(MyService.class);
}
erhalte ich die Fehlermeldung:
Cannot cast my.package.MyServiceProxy to my.package.MyService
Im Log steht dann:
WARN 04.11.2013 15:27:16.995 (de.espirit.firstspirit.server.io.AbstractServiceLocator): incompatible class loaders? de.espirit.firstspirit.server.jetty.JettyClassLoader@265aeb9e / de.espirit.firstspirit.server.module.ExtendedUrlClassLoader@67a0326f-37
auch folgendes wirft eine Exception:
@Override
public void execute(ToolbarContext context) {
ServicesBroker servicesBroker = context.requireSpecialist(ServicesBroker.TYPE);
MyServiceProxy myService = servicesBroker.getService(MyServiceProxy .class);
}
Cannot cast my.package.MyServiceProxy to my.package.MyServiceProxy
was mache ich falsch?
Es scheint auf jeden Fall ein Classloader-Problem zu sein
Cannot cast my.package.MyServiceProxy to my.package.MyServiceProxy
aber ich sehe die Lösung nicht.
Hallo Michael,
es könnte sich hier um ein bekanntes Problem handeln (interne Ticket-Id 144760). Wende dich doch bitte mit der FirstSpirit-Version, komplettem Stacktrace und dem FSM an unseren Helpdesk, damit das verifiziert werden kann.
Viele Grüße
Christoph
Kleine Korrektur:
Die interne Ticket-Id ist _nicht_ 144760 sondern 144670.
Viele Grüße,
Adam