Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich verwende NetBeans und wenn ich Beans instanzieren möchte, die im File applicationContext.xml in WEB-INF deklariert sind, bekomme ich von ClassPathXmlApplicationContext eine Exception, dass dieses File nicht am Classpath ist.
Gut das mag stimmen, aber warum gibt Netbeans die Konfigurationsfiles dann standardmäßig ins WEB-INF Verzeichnis?
Gibts eine andere Möglichkeit die Beans zu instanzieren, oder muss ich die Konfiguration in einen anderen Ordner geben?
Bzw. kann ich den ClassPathXmlApplicationContext irgendwie auf das WEB-INF Verzeichnis verweisen.
Dankeschön schon im Voraus.
LG
WEB-INF ist das Standard-Verzeichnis in Webapplications (z.B. für den Apache Tomcat). Damit dürfte dann aber der ClassPathXmlApplicationContext nicht so ohne weiteres klappen. Für Webapps sollte man den WebappApplicationContext (oder so ähnlich nutzen) oder besser gleich den den ContextListener.
Nutzt du eine Webapp oder hast du eventuell das Projekt als Webapp erstellt, dass Netbeans meint das AppContext-XML sollte im WEB-INF Verzeichnis liegen?
Ja, ist eine WebApp, ich werde mal deine Vorschläge versuchen.
An und für sich habe ich ja im DeploymentDescriptor auf diese Dateien verwiesen.
Also ich probiers jetzt einfach nochmal.
Dankeschön!
EDIT:
Also den Listener hab ich definiert, aber trotzdem findet meine MainClass das xmlFile nicht.
Die MainClass
Java:
...public static void main (String[] args) throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
SequenceGenerator generator = (SequenceGenerator) context.getBean("sequenceGenerator");
...
wirft diese Exception:
...
Caused by: java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist...
Im ApplicationContext ist der "SequenceGenerator" definiert.
Die relavanten Parts von web.xml sind wie folgt:
...
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
...
Ich weis dass WEB-INF nicht im Classpath liegt.
Nur verstehe ich nicht warum Netbeans per default Konfigurationsfiles anlegt die man nicht findet.
Es muss ja dann an ClassPathXmlApplicationContext liegen (oder?), da es ja eben nicht am ClassPath liegt, aber wie kann ich das Bean sonst Instanzieren?
Hab ja an den Einstellungen nichts geändert. Nur das Bean deklariert und kanns jetzt nicht benutzen.
Kenne Netbeans nicht, kannst ja mal die Entwickler fragen
Wenn du es selber machen möchtest wäre eben der ContextListener die bessere Wahl und die Datei in den Classpath zu verschieben sollte ja wohl möglich sein.
Seit wann hat ne Webapp eigentlich ne main? Bei einer Webapp ist es doch vollkommen richtig, den Spring Application Context unter WEB-INF abzulegen, aber dann braucht man auch keine Main...
Wollte es nur einmal ausprobieren, ihr habt recht, in der WebApp brauche ich sie nicht.
Hab sie jetzt mit FileSystemXmlApplicationContext instanziert und es funktioniert.
LG
EDIT:
Eine Frage hätte ich noch. (Es scheitert bei mir doch immer an banalen Dingen -_-)
Und zwar habe ich eine Spring-Security XML-Datei angelegt. (Ebenfalls in WEB-INF)
Im DeploymentDescriptor hab ich auch Filter definiert, etc. und alles funktioniert bis hierhin.
Wenn ich jedoch über <context-param> -> <param-value> die Location von security.xml definere entsteht ein Fehler beim deployen.
In den Tutorials steht nirgends etwas über dieses Problem. Ich werd echt schon verrückt.