spring jndi NamingException: Der Name [spring.liveBeansView.mbeanDomain] ist in diesem Kontext nicht gebunden

8

Meine Webapp mit Feder 3.2.4 läuft gut. Aber wenn ich es starte, werde ich Debug-Infos bekommen:

%Vor%

Ich weiß nicht, was die Infos bedeuten. Ich verwende c3p0 als mein dataSource und die Konfiguration lautet:

%Vor%

Ich finde nicht, wo JNDI verwendet wird. Ich habe einige Fragen zu dieser Ausnahme gesucht. Sie sind jedoch immer mit @Profile oder @Configuration verknüpft. Es gibt keine @Profile oder @Configuration in meinem Code.

In meiner Bean-Klasse gibt es keine @Bean Annotation. Sind die Infos damit verbunden? Aber ich brauche keine Spring inject meine Bohnenklasse.

    
lbear 20.05.2014, 03:35
quelle

2 Antworten

11

Wenn Sie keine Profile oder mbeans verwenden, fügen Sie der web.xml Kontextparameter hinzu / strong> als Workaround (Trick), hoffentlich gibt es jemanden, der eine bessere Lösung bietet als dieser hässliche.

%Vor%     
rekinyz 11.06.2014, 21:22
quelle
7

Dies ist das JIRA-Problem und eine kurze Erklärung, warum es zum ersten Mal im Frühling 3.2 eingeführt wurde. Weitere Details finden Sie im ersten Commit für diese Funktion.

>

Im Grunde ist diese Funktion eine Möglichkeit, über JMX eine Live-Liste von Beans bereitzustellen, die in einem Anwendungskontext einer bestimmten Anwendung existieren. Beispielsweise haben Sie in Tomcat eine Webapp bereitgestellt, die Sie beim Starten als eine Umgebungsvariable mit dem Namen spring.liveBeansView.mbeanDomain übergeben. Nehmen wir an, Sie geben ihm keinen Wert oder nur einen leeren String. Spring sucht eine lange Liste möglicher Standorte für diese Art von Eigenschaft und findet sie in der Systemumgebung. Wenn es gefunden wird, wird es wissen, dass diese Liste von Live-Beans (im JSON-Format) über JMX verfügbar gemacht wird.

Wenn Sie mit JConsole eine Verbindung zu Ihrer Tomcat-Instanz herstellen, sehen Sie einen Eintrag mit dem Namen DefaultDomain und darunter den Namen Ihrer Anwendung. Wenn Sie erweitern, sollte ein Attribut mit dem Namen SnapshotAsJson vorhanden sein, und dies ist die Live-Liste der Beans aus dem Anwendungskontext Ihrer Webanwendung.

Wenn Sie Ihrer Systemumgebungsvariablen einen Wert gegeben hätten, sagen wir "test_domain", würde der Eintrag in JMX test_domain und nicht DefaultDomain heißen.

Im Grunde sehen Sie diese DEBUG-Nachrichten, weil Spring nach der Eigenschaft spring.liveBeansView.mbeanDomain in einer langen Liste von Speicherorten sucht, wobei JNDI (im Falle von JEE-Servern) einer davon ist.

In der neuesten Version von SpringSource Tool Suite (und möglicherweise in einigen früheren Versionen) gibt es eine Funktion, die diese JMX-Live-Beans namens "Live Beans Graph" verwendet, die diese JSON-Darstellung verwendet und eine etwas einfache Grafik erstellt Darstellung dieser Bohnen.

    
Andrei Stefan 20.05.2014 06:04
quelle

Tags und Links