OK, to make a first step which doesn't involve creating a separate bundle for datasource, but instead adding a datasource configuration directly to my Camel route bundle's blueprint.xml:
<?xml version="1.0" encoding="UTF-8"?> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0" xsi:schemaLocation=" ... "> <cm:property-placeholder persistent-id="WeatherCurrent" update-strategy="reload"> <cm:default-properties> <cm:property name="sourceUrl" value=" http://meteo.arso.gov.si/uploads/probase/www/observ/surface/text/sl/observation_si_latest.xml" /> <cm:property name="weatherDbConnectionUrl" value="jdbc:mysql:// my.company.com:3306/weather?useUnicode=yes&characterEncoding=UTF-8" /> <cm:property name="weatherDbUser" value="testUser" /> <cm:property name="weatherDbPassword" value="testPass" /> </cm:default-properties> </cm:property-placeholder> <bean id="dataSource" class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"> <property name="url" value="${weatherDbConnectionUrl}"/> <property name="user" value="${weatherDbUser}"/> <property name="password" value="${weatherDbPassword}"/> </bean> <service interface="javax.sql.DataSource" ref="dataSource"> <service-properties> <entry key="osgi.jndi.service.name" value="jdbc/mysqlds"/> </service-properties> </service> <bean id="weatherCurrentRouteBuilder" class="com.mycompany.route.weather.WeatherCurrentRouteBuilder" init-method="refresh"> <property name="sourceUrl" value="${sourceUrl}"></property> </bean> <camelContext id="weather-forecast" xmlns=" http://camel.apache.org/schema/blueprint"> <routeBuilder ref="weatherCurrentRouteBuilder" /> </camelContext> </blueprint> and the configuration file weather.cfg sourceUrl= http://meteo.arso.gov.si/uploads/probase/www/observ/surface/text/sl/observation_si_latest.xml weatherDbConnectionUrl=jdbc:mysql:// my.comapny.com:3306/weather?useUnicode=yes&characterEncoding=UTF-8 weatherDbUser=testUser weatherDbPassword=testPass and the persistence.xml <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" version="1.0"> <persistence-unit name="weather" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name =jdbc/mysqlds)</jta-data-source> <class>my.company.model.entities.weather.WeatherCurrent</class> <exclude-unlisted-classes>true</exclude-unlisted-classes> <properties> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> </properties> </persistence-unit> </persistence> and features bundle which installs configuration and drivers besides my camel route: <?xml version="1.0" encoding="UTF-8"?> <features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.0.0 http://karaf.apache.org/xmlns/features/v1.0.0"> <feature name="weather" version="${pom.version}"> <bundle>mvn:mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.stax-api-1.0/1.9.0</bundle> <bundle>mvn:mvn:mysql/mysql-connector-java/5.1.18</bundle> <bundle>mvn:my.company/route-weather-current/${pom.version}</bundle> <configfile finalname="/etc/weather.cfg">mvn:my.company/features-weather/${pom.version}/cfg</configfile> </feature> </features> Am I heading the right way or am I on the Titanic's route? Cheers, borut Dne 16. april 2012 14:51 je Jean-Baptiste Onofré <[email protected]>napisal/-a: > Username/password/URL could be in <cm:properties/> and so handle in the > "application" config oriented file in etc. > > Regards > JB > > > On 04/16/2012 02:47 PM, Christian Schneider wrote: > >> I would simply deploy the blueprint xml by hand. Just treat it like a >> config file you would have to add. >> This is of course not everyone´s favorite style. >> >> The problem with adding the blueprint to the feature is that it would >> have to be in the maven repo. As the username and password are in this >> file this is not recommended. >> >> So another way to achieve what I did is separate the things that should >> be configured per server or stage from the things that keep the same like >> driver class name. You could use the config admin service in the >> blueprint file to move the username / password to a separate config file. >> This would make the whole thing a bit more complex though but you could >> then safely put the blueprint file into a feature. >> >> Christian >> >> >> 2012/4/16 Borut Bolčina <[email protected] >> <mailto:borut.bolcina@gmail.**com <[email protected]>>> >> >> >> Hello, >> >> my first post here, so bare with me please - newbie on board. >> >> I am trying to deploy my first camel route to Karaf and this route >> must be configurable (html address) and must persist some data with >> jpa component. This route is happily persisting in my test (outside >> osgi container). >> >> Now I am reading >> https://github.com/cschneider/**Karaf-Tutorial/blob/master/db/** >> datasource/datasource-mysql.**xml<https://github.com/cschneider/Karaf-Tutorial/blob/master/db/datasource/datasource-mysql.xml>where >> it says I should copy the file to Karaf's deploy folder. >> >> And the question: What is the practice of deploying data sources? >> Should I create a features project which includes a blueprint for my >> route's data source? >> >> Let's say my route needs connection to mysql database, so the >> feature project would include features.xml >> >> <?xml version="1.0" encoding="UTF-8"?> >> <features >> xmlns="http://karaf.apache.**org/xmlns/features/v1.0.0<http://karaf.apache.org/xmlns/features/v1.0.0> >> " >> >> xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance> >> " >> >> xsi:schemaLocation="http://**karaf.apache.org/xmlns/**features/v1.0.0<http://karaf.apache.org/xmlns/features/v1.0.0> >> >> http://karaf.apache.org/xmlns/**features/v1.0.0<http://karaf.apache.org/xmlns/features/v1.0.0> >> "> >> >> <feature name="weather" version="${pom.version}"> >> <bundle>mvn:mvn:org.apache.**servicemix.specs/org.apache.** >> servicemix.specs.stax-api-1.0/**1.9.0</bundle> >> <bundle>mvn:mvn:mysql/mysql-**connector-java/5.1.18</bundle> >> <bundle>mvn:my.company/route-**weather-current/${pom.version}** >> </bundle> >> *<bundle>my datasource blueprint</bundle>* >> >> <configfile >> finalname="/etc/weather.cfg">**mvn:my.company/features-** >> weather/${pom.version}/cfg</**configfile> >> </feature> >> </features> >> >> I guess then the only command to install my Camel route to Karaf >> would then be feature:install and all the dependencies including >> datasource and configuration would be installed before. And how to >> package the "my datasource blueprint"? >> >> Or is there some other practice? >> >> Thanks, >> borut >> >> >> > -- > Jean-Baptiste Onofré > [email protected] > http://blog.nanthrax.net > Talend - http://www.talend.com >
