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&amp;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
>
>

Reply via email to