2017-02-21 3 views
0

Ich migriere eine Anwendung von OC4J auf WebLogic 12c und die Spring-Beans geben einen Fehler, ich kann nicht herausfinden, wie zu lösen ist. Meine Frage ist, was die Ursache für diesen Fehler sein kann. Ich habe folgende Bohne für die JNDI-Suche:Fehler bei der Konfiguration der JNDI-Suche für WebLogic + Spring

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="${datasource.jndiname}" /> 
    <property name="lookupOnStartup"> 
     <value>false</value> 
    </property> 
    <property name="proxyInterface"> 
     <value>javax.sql.DataSource</value> 
    </property> 
</bean> 

Der Wert ${datasource.jndiname} erwartet wird, aus einer config.properties Datei mit der folgenden Zeile kommen:

server.database.datasource=${datasource.jndiname} 

und den Wert von server.database.datasource stammt aus einem config.filter Datei mit der Zeile:

server.database.datasource=jdbc/DATASOURCE 

Dies funktioniert gut mit OC4J und es auch wo rks, wenn ich die ${datasource.jndiname} auf seinen Wert jdbc/DATASOURCE in WebLogic ersetzen, aber es gibt mir die folgende Fehlermeldung, wenn ich die Referenz behalten (und ich brauche es zu halten):

JndiObjectTargetSource failed to obtain new target object; nested exception is javax.naming.NameNotFoundException: While trying to lookup '${datasource.jndiname}' didn't find subcontext '${datasource'. Resolved ''; remaining name '${datasource/jndiname}' 

Antwort

0

Nach einigen Recherchen fand ich eine Immobilie zu die Bean, die den Fehler behoben hat. Wenn die Eigenschaft resourceRef auf false gesetzt wird, funktioniert die Referenz ${datasource.jndiname} wie erwartet. Im letzten Code, der unten gezeigt wird, fügte ich auch JndiTemplate hinzu.

<bean id="dsJndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
    <property name="environment"> 
     <props> 
      <prop key="java.naming.provider.url">t3://localhost:7001</prop> 
      <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop> 
     </props> 
    </property> 
</bean> 

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="${datasource.jndiname}" /> 
    <property name="resourceRef" value="false"/> 
    <property name="lookupOnStartup" value="false"/> 
    <property name="proxyInterface" value="javax.sql.DataSource"/> 
    <property name="jndiTemplate"> 
     <ref local="dsJndiTemplate" /> 
    </property> 
</bean> 
Verwandte Themen