Search the FirstSpirit Knowledge Base
Hallo FS-Community,
wir verwenden eine FSM-Bibliothek, um eine JAR-Library in FirstSpirit zur Verfügung zu stellen. Hiervon wird in einem Beanshell-Skript Gebrauch gemacht, um einen Suchagenten aufzurufen (nur zu eurer Info).
Die Konfiguration der Klassen im JAR geschieht mittels Spring (bei uns application.xml). Diese XML-Datei liegt unter dem root-Verzeichnis des JAR:
de/...
ext/...
application.properties
application.xml
Die XML wird normal mit dem Befehl:
ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
gesucht und auf dem lokalen Testsystem auch gefunden.
Wird das ganze nun als FSM zusammengebaut, in der module.xml benannt und auf FirstSpirit deployed, so wirft er den Fehler:
ERROR 17.02.2011 14:26:40.528 {seID=21516} (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : de.espirit.firstspirit.access.script.ExecutionException: Method Invocation de.edeka.internet.b2b.agent.SearchAgentImmobilie.main at line 3
de.espirit.firstspirit.access.script.ExecutionException: Method Invocation de.edeka.internet.b2b.agent.SearchAgentImmobilie.main at line 3
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:120)
at de.espirit.firstspirit.common.ScriptUtil.execute(ScriptUtil.java:88)
...
at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:36)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [application.xml]; nested exception is java.io.FileNotFoundException: class path resource [application.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:126)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:92)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at de.edeka.internet.b2b.agent.SearchAgentImmobilie.main(SearchAgentImmobilie.java:87)
...
at bsh.This.invokeMethod(Unknown Source)
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:111)
... 16 more
Caused by: java.io.FileNotFoundException: class path resource [application.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)
... 47 more
Wir haben parallel eine FSM-WebApp, die eine vergleichbare Struktur aufweist. Dort funktioniert das Finden der application.xml einwandfrei.
Die Pfadangebe wurde bereits zu "/applicaiton.xml" geändert, es wurde versucht die XML ins FSM auszulagern und extra in der module.xml anzugeben. Alles mit dem gleichen Effekt: sie wird nicht gefunden!
Vielleicht ist bereits jemand auf das gleiche Problem gestoßen und hat eine Lösung gefunden. Aktuell ist dieses Problem ein ziemlicher Blocker!
Viele Grüße aus Hamburg!
Hallo Herr Pfeiler,
leider kommt bei Ihrem Beispiel eine Security Exception von Java.
Auf einer älteren FirstSpirit Version funktioniert es problemlos.
Meine Version: FSVersion=4.2.446.45868#2395;JDK=1.6.0_22 32bit
Viele Grüße
Martin Dirlewanger
Bitte mal in der Admni-Konsole den Haken "Alle Rechte" für das Modul aktivieren.
Hallo Herr Jodeleit,
vielen Dank für die Info. Habe die Auswahl quasi übersehen.
Viele Grüße
Martin Dirlewanger
Wer immer hier drüber stolpert: Im Code Beispiel oben wird der classloader nicht korrekt zurück auf den alten Wert sonder einfach auf null gesetzt.
Sieh hier: Re: Hibernate in FS-Service