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.
Ich habe folgendes Problem. Ich liefer an unseren Betrieb ein war-File aus. In diesem war-File befindet sich unter META-INF eine context.xml mit der DataSource für die Datenbank. In der DataSource-Definition befindet sich nur das Template, d.h. es beinhaltet nur driver und url nicht jedoch user und pwd. Der Betrieb füllt dann diese Attribute noch aus bzw. überspielt die neue context.xml mit der richtigen.
Wenn das war-File deployt wird, wird anscheinend die context.xml ins conf/Catalina/localhost mit Dateinamen [webapp].xml kopiert. Diese xml-Datei dürfte jedoch vor der context.xml der WebApp gelesen werden und beinhaltet daher die leeren user/pwd Attribute. Der Fehler wird bereinigt wenn das war-File und diese [webapp].xml gelöscht werden. Das ist natürlich keine optimale Lösung, was könnte man da besser machen? Eventuell die context.xml in die server.xml einbinden, oder die context.xml gar nicht mehr ausliefern?
Warum nicht auf Containermanaged ConnectionPool/DS umsteigen?
So würde der Kunde seinen TC konfigurieren und damit die Datasource nebst Usernnamen und Passwort, die Anwendung (in der context.xml) steht dann nur noch der JNDI Name der DS, welcher immer gleich bleiben kann.
Danke für die Antwort. Wo kann man das beim TC konfigurieren? In der server.xml? Muss ich dann überhaupt noch die context.xml ausliefern wenn in der server.xml eh schon die DataSource konfiguriert ist? Oder schaut das anders aus?
In der Server XML wird die DS konfiguriert (Conatiner Managed), in der Context.xml steht dann nur drinnen, dass diese DS von der Anwendung genutzt wird.
Glaube mich erinnern zu können das da was mit "resource links" oder ähnlich war... werde mal schnell suchen.
Geht zwar um iBatis und Tomcat JNDI DS, aber ignoriere die iBatis config, nimm die server.xml Config + context.xml config, dein Code muss einen JNDI Aufruf machen um die DS zu bekommen.
Sieht gut aus, allerdings glaube ich dass es da Unerschiede gab, ob man java:comp/env/jdbc/MyDataSource oder jdbc/MyDataSource verwendete, am besten beides mal probieren wenn es die JNDI DS nicht findet.
Kann dir auch lambda Probe empfehlen, da kann man die DS gleich ausprobieren, und vieles vieles mehr
Nach drei Wochen bin ich doch einmal endlich dazu gekommen das ganze nochmal anzuschauen. Es ist tatsächlich sehr einfach und zwar muss man in der conf/server.xml unter dem Tag GlobalNamingResources seine Resourcen definieren und in der META-INF/context.xml der WebApp einfach darauf verweisen:
Das ist alles. In der WebApp ist sonst nichts zu ändern. Der Unterschied beim JDNI-Namen entsteht glaub ich dann, wenn man die DataSource direkt holt, oder zuerst den Context, beides ist möglich: