Hi, Dne 26. april 2012 11:09 je Christian Schneider <[email protected]>napisal/-a:
> You can check if the datasource works by using my db commands for karaf: > https://github.com/cschneider/Karaf-Tutorial/tree/master/db/command > Installed: karaf@root> install -s mvn:net.lr.tutorial.karaf.db/db-command/1.0-SNAPSHOT Bundle ID: 129 Selected: karaf@root> db:select jdbc/mysqlds But the query returns nothing: karaf@root> db:exec "select * from my_table_which_holds_some_data" > > You should also check with the service:list command if the blueprint.xml > offers the DataSource service. > Yes, i think it does: weather-datasource (123) provides: ---------------------------------- javax.sql.DataSource org.osgi.service.blueprint.container.BlueprintContainer OpenJPA Aggregate Jar (125) provides: ------------------------------------- javax.persistence.spi.PersistenceProvider weather-model (128) provides: ----------------------------- javax.persistence.EntityManagerFactory Thanks for the tips. Will have to dig some more into the issue. -borut > > Christian > > > Am 26.04.2012 10:45, schrieb Borut Bolčina: > > Hello, > > thanks Bengt for your input, I really appreciate you took the time! > > My work on this is somehow sporadic, but now I have managed to get the > Camel route running in Karaf > > from("quartz://weather/currentWeatherSlovenia?cron=0+0/1+*+?+*+*") > .log("Getting weather from: " + sourceUrl) > .to(sourceUrl) > .split() > .tokenizeXML("metData") > .unmarshal(jaxbDataFormat) > > .to("jpa:com.mycompany.weather.entities.WeatherCurrent?persistenceUnit=weather"); > > with the exception of saving the data to the database which fails with: > > Caused by: <openjpa-2.2.0-r422266:1244990 fatal user error> > org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or > DataSource class name must be specified in > the ConnectionDriverName property. Available properties in configuration > are "org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@442ce698". > at > org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:72)[125:org.apache.openjpa:2.2.0] > at > org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:844)[125:org.apache.openjpa:2.2.0] > at > org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:602)[125:org.apache.openjpa:2.2.0] > at > org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1510)[125:org.apache.openjpa:2.2.0] > at > org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:518)[125:org.apache.openjpa:2.2.0] > .... > > My datasource bundle is deployed in OSGi (later the username and > password will be configurable, that is - outside of the bundle) > > <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> > > <bean id="weatherDataSource" > class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"> > <property name="url" > value="jdbc:mysql:// > dev.mycompany.com:3306/weather?useUnicode=yes&characterEncoding=UTF-8<http://dev.mycompany.com:3306/weather?useUnicode=yes&characterEncoding=UTF-8>" > /> > <property name="user" value="myUsername" /> > <property name="password" value="myPassword" /> > </bean> > > <service interface="javax.sql.DataSource" ref="weatherDataSource"> > <service-properties> > <entry key="osgi.jndi.service.name" value="jdbc/mysqlds" /> > </service-properties> > </service> > </blueprint> > > which is used by my model bundle's persistence.xml > > <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://java.sun.com/xml/ns/persistence > http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> > <persistence-unit name="weather" transaction-type="JTA"> > > <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> > <jta-data-source>osgi:service/javax.sql.DataSource/( > osgi.jndi.service.name=jdbc/mysqlds)</jta-data-source> > <class>my.company.weather.entities.WeatherCurrent</class> > <exclude-unlisted-classes>true</exclude-unlisted-classes> > </persistence-unit> > </persistence> > > I think the problem is that my model bundle is not seeing the > datasource service. How do I confirm that or how should my model's > MANIFEST look like? > > Cheers, > borut > > > -- > Christian Schneiderhttp://www.liquid-reality.de > > Open Source Architect > Talend Application Integration Division http://www.talend.com > >
