Question

Je suis en train de déployer un ensemble à base de printemps dans OSGi (fusible esb) .Dans le contexte de printemps, je fais référence à un fichier db4o qui se trouve dans le dossier des ressources. Selon ma compréhension, un projet Maven fera en sorte que tout fichier disponible sous dossier ressources seront disponibles dans le classpath du projet. Je l'ai gardé le fichier sous ressources / META-INF / printemps / repo / test.db4o.

Voici l'entrée dans le contexte du printemps.


<bean id="objectContainer" class="org.springmodules.db4o.ObjectContainerFactoryBean">
    <property name="databaseFile" value="classpath:META-INF/spring/repo/test.db4o" />
</bean>

Une fois installer et essayer de démarrer l'application, je reçois l'exception suivante.


java.io.FileNotFoundException: OSGi resource[classpath:META-INF/spring/repo/test.db4o|bnd.id=258|bnd.sym=taxonomydaoimplbundle] cannot be resolved to absolute file path because it does not reside in the file system: bundle://258.0:1/META-INF/spring/repo/test.db4o

J'ai essayé différentes combinaisons, mais OSGi ne semble pas reconnaître ce fichier. Tout pointeur sera apprécié.

-Merci

Était-ce utile?

La solution

Je trouve enfin la question. ObjectContainerFactoryBean se fonde sur OSGiResourceBundle pour charger la ressource comme un objet de fichier. Bien que OSGiResourceBundle expose une méthode appelée getFile (), il ne fonctionne pas comme prévu dans un environnement OSGi. Il attend toujours un protocole de fichier alors que la ressource retournée comme un URI a un protocole « paquet » .Hence, l'exception est levée. La solution consiste à utiliser un ou inputstream getUrl. Comme je n'ai pas le code source de ObjectContainerFactoryBean, je devais étendre cette classe pour fournir ma propre implémentation qui charge le fichier en tant InputStream.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top