A minute later after sending the email below, I saw I was using jpa 1.0 
persistence.xml, god knows where I copied/pasted the template from. 

I have validator installed, so this is not a problem. I need it as I am using 
some annotations on my model pojo to validate incoming values from xml input 
source.

Right now I am clueless.

Borut

Sent from my iPad

On 26. apr. 2012, at 15:06, Bengt Rodehav <[email protected]> wrote:

> Hello again,
> 
> The Warning is know at OpenJPA. I think it is reported in JIRA. It turns up 
> now and then but noone seems to know exactly what triggers it. I've had it 
> too but it doesn't seem to be a problem.
> 
> About validation - I should have though of that...
> 
> I also have this line in my persistence.xml:
> 
>     <validation-mode>NONE</validation-mode>
> 
> This tells OpenJPA not to validate. Otherwise you must also deploy a 
> validation provider. I've used the reference implementation from Hibernate 
> for this but normally I turn it off with the above line.
> 
> /Bengt
> 
> 2012/4/26 Borut Bolčina <[email protected]>
> I modified the model bundle to include properties section in 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>si.najdi.weather.entities.WeatherCurrent</class>
>               <exclude-unlisted-classes>true</exclude-unlisted-classes>
> 
>               <properties>
>                       <property name="openjpa.ConnectionFactoryMode" 
> value="managed" />
>                       <property name="openjpa.jdbc.DBDictionary" 
> value="mysql(TableType=innodb)" />
>                       <property name="openjpa.Log" value="DefaultLevel=INFO, 
> Tool=INFO" />
>               </properties>
> 
>       </persistence-unit>
> </persistence>
> 
> and reinstalled all my bundles, but it makes no difference.
> 
> I notices this in my console when the route is started:
> 
> 20  WARN   [Blueprint Extender: 2] openjpa.Runtime - The configuration 
> property named "openjpa.Id" was not recognized and will be ignored, although 
> the name closely matches a valid property called "openjpa.Id".
> 
> With the TRACE level enabled, I see:
> 
> karaf@root> osgi:install -s mvn:com.mycompany/weather-model/1.0.5-SNAPSHOT
> 35  weather  TRACE  [Thread-10] openjpa.Runtime - Setting the following 
> properties from "?" into configuration: 
> {openjpa.ConnectionFactory=org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource@92b,
>  openjpa.ConnectionFactoryMode=managed, 
> javax.persistence.validation.mode=AUTO, 
> javax.persistence.provider=org.apache.openjpa.persistence.PersistenceProviderImpl,
>  openjpa.TransactionMode=managed, 
> openjpa.MetaDataFactory=jpa(Types=com.mycompany.weather.entities.WeatherCurrent),
>  
> openjpa.ClassResolver=org.apache.openjpa.persistence.PersistenceUnitInfoImpl$ClassResolverImpl@ee7fac,
>  javax.persistence.sharedCache.mode=UNSPECIFIED, 
> openjpa.Log=DefaultLevel=TRACE, Tool=INFO, 
> openjpa.jdbc.DBDictionary=mysql(TableType=innodb), PersistenceVersion=1.0, 
> openjpa.Id=weather}
> 58  weather  TRACE  [Thread-10] openjpa.Runtime - No cache marshaller found 
> for id org.apache.openjpa.conf.MetaDataCacheMaintenance.
> 104  weather  TRACE  [Thread-10] openjpa.MetaData - Scanning resource 
> "META-INF/orm.xml" for persistent types.
> 105  weather  TRACE  [Thread-10] openjpa.MetaData - The persistent unit root 
> url is "null"
> 105  weather  TRACE  [Thread-10] openjpa.MetaData - 
> parsePersistentTypeNames() found 
> [com.mycompany.weather.entities.WeatherCurrent].
> 106  weather  TRACE  [Thread-10] openjpa.MetaData - Found 1 classes with 
> metadata in 48 milliseconds.
> 1  weather  TRACE  [Thread-10] openjpa.Runtime - Setting the following 
> properties from "?" into configuration: {openjpa.BrokerFactory=jdbc, 
> javax.persistence.provider=org.apache.openjpa.persistence.PersistenceProviderImpl,
>  javax.persistence.sharedCache.mode=UNSPECIFIED, PersistenceVersion=1.0, 
> openjpa.jdbc.DBDictionary=mysql(TableType=innodb), 
> openjpa.Log=DefaultLevel=TRACE, Tool=INFO, openjpa.Id=weather, 
> openjpa.ConnectionFactoryMode=managed, 
> openjpa.ConnectionFactory=org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource@92b,
>  javax.persistence.validation.mode=AUTO, openjpa.TransactionMode=managed, 
> openjpa.MetaDataFactory=jpa(Types=com.mycompany.weather.entities.WeatherCurrent),
>  openjpa.BrokerImpl=non-finalizing, 
> openjpa.ClassResolver=org.apache.openjpa.persistence.PersistenceUnitInfoImpl$ClassResolverImpl@ee7fac}
> 1  weather  TRACE  [Thread-10] openjpa.Runtime - Not creating a ValidatorImpl 
> because this app is using the JPA 1.0 Spec
> 1  weather  TRACE  [Thread-10] openjpa.Runtime - 
> org.apache.openjpa.persistence.PersistenceProviderImpl@1ad69f1 creating 
> container org.apache.openjpa.persistence.EntityManagerFactoryImpl@6888b for 
> PU weather.
> Bundle ID: 137
> 
> 
> Certanly this look strange:
> Not creating a ValidatorImpl because this app is using the JPA 1.0 Spec
> 
> Digging...
> 
> 
> 
> 
> Dne 26. april 2012 12:57 je Bengt Rodehav <[email protected]> napisal/-a:
> 
> Then I guess OpenJPA can't find or does not try to find your datasource 
> service. Looking at my different persistence.xml's I usually have a few 
> OpenJPA properties defined, like this:
> 
> <properties>
>       <property name="openjpa.ConnectionFactoryMode" value="managed" />
>       <property name="openjpa.jdbc.SynchronizeMappings" 
> value="buildSchema(ForeignKeys=true)" />
>       <property name="openjpa.jdbc.DBDictionary" 
> value="org.apache.openjpa.jdbc.sql.SQLServerDictionary" />
>       <property name="openjpa.jdbc.UpdateManager" value="operation-order" />
>       <property name="openjpa.Log" value="DefaultLevel=INFO, Tool=INFO" />
> <!--      <property name="openjpa.Log" value="DefaultLevel=TRACE, Tool=INFO" 
> />-->
>     </properties>
> 
> One idea is to enable TRACE logging to see what OpenJPA complains about. 
> Another one is that maybe the first property (the ConnectionFactoryMode) must 
> be set to "managed" for this to work. I'm not sure but there is probably a 
> reason why I always have that property defined.
> 
> /Bengt
> 
> 2012/4/26 Borut Bolčina <[email protected]>
> Hello,
> 
> yes I find this comments very useful!
> 
> karaf@root> ls | grep -B 4 javax.sql.DataSource
> org.apache.aries.jpa.container.context.PersistenceContextProvider
> 
> weather-datasource (123) provides:
> ----------------------------------
> javax.sql.DataSource
> karaf@root> ls 123
> 
> weather-datasource (123) provides:
> ----------------------------------
> objectClass = javax.sql.DataSource
> osgi.jndi.service.name = jdbc/mysqlds
> osgi.service.blueprint.compname = weatherDataSource
> service.id = 222
> ----
> objectClass = org.osgi.service.blueprint.container.BlueprintContainer
> osgi.blueprint.container.symbolicname = weather-datasource
> osgi.blueprint.container.version = 1.0.5.SNAPSHOT
> service.id = 223
> 
> I guess the datasource service is published correctly.
> 
> Thanks,
> borut
> 
> Dne 26. april 2012 11:09 je Bengt Rodehav <[email protected]> napisal/-a:
> 
> Hello there,
> 
> I guess you should check that your datasource has been published as a 
> service. I'm not the best Karaf guru but I would do something like this:
> 
> Check what services provides datasources:
> 
> ls | grep -B 4 javax.sql.DataSource
> 
> This should identify what bundles provide datasources as services. Assume 
> that one of the bundles had the bundle id 78, you could then look more 
> closely at that bundles services with the following command:
> 
> ls 78
> 
> You will now see the services provided by this bundle and also its service 
> properties. You should see a line similar to:
> 
> osgi.jndi.service.name = jdbc/mysqlds
> 
> Hope that helps,
> 
> /Bengt
> 
> 
> 
> 2012/4/26 Borut Bolčina <[email protected]>
> 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"
>  />
>               <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
> 
> 
> Dne 19. april 2012 20:35 je Bengt Rodehav <[email protected]> napisal/-a:
> 
> A few years back Hibernate was my choice. The past two years I have moved to 
> OpenJPA. The main reason is that OpenJPA works much better with OSGi. I did 
> try EclipseLink as well but had OSGi problems. This was a while back and has 
> probably been improved by now.
> 
> Another reason why I prefer OpenJPA to Hibernate is that the Apache community 
> is so much better - much more open. I'm sure this is a matter of taste but I 
> would not go for Hibernate.
> 
> That said, OpenJPA also has some classloading issues under OSGi. In normal 
> situations it works though. A final compelling reason to use OpenJPA is that 
> it is much more common choice when using Apache Karaf (I think). It's 
> normally easier to use different Apache projects together since someone else 
> has always done it before.
> 
> What I don't like is the way JPA uses the persistence.xml. I tend to go with 
> the approach Christian recommended - to put the datasource in a separate 
> bundle. It can then easily be switched. In practice, though, it's hard to 
> actually change database type (not just url) without having to affect the 
> application.
> 
> First, the JPA implementation is configured in persistence.xml. E g that's 
> where you specify database dialect for OpenJPA. Ideally this would be 
> separated from the persistence.xml and possible to configure (e g with OSGi's 
> config admin).
> 
> Second, at least when using JPA annotations (which I do), your source code 
> becomes tailored for a certain database type. I often startup with a simple 
> Derby database for testing and then move  to SQLServer for production. In 
> that process I often have to change some annotations to make it work in 
> SQLServer.
> 
> Overall I'm quite content with the OpenJPA+Aries+Karaf combo though. I just 
> wish that Aries could get their release process straightened out soon.
> 
> /Bengt
> 
> 
> 2012/4/19 Borut Bolcina <[email protected]>
> On 19. apr. 2012, at 16:11, Christian Schneider <[email protected]> 
> wrote:
> 
> > I guess the suggested way is to not run hibernate :-) For me the fact that 
> > they do not create bundles says that jboss does not care about OSGi in 
> > hibernate. As they now have an OSGi server with JBoss 7 that may change 
> > soon though.
> 
> I just looked at JBoss website and their support is not even in dipers. See 
> https://issues.jboss.org/browse/JBOSGI-260.
> 
> > I had some good experience with apache openjpa together with apache aries 
> > jpa. Together they solve the classloading problem where the jpa provider 
> > can not see the user classes. I have not built bigger applications with it 
> > though.
> 
> I will try with OpenJPA, but would really like to hear other people's 
> hibernate stories!
> 
> >
> > There is also Eclipselink. With their affiliation to Eclipse they will 
> > surely have an eye on OSGi compatibility. The problem there was that they 
> > did not put their jas into the maven central repo.
> >
> > So all in all I am not sure what to recommend. Perhaps others already have 
> > experience with some jpa solution in bigger projects?
> 
> Please share some stories to make my decision easier.
> 
> Borut
> 
> >
> > Christian
> >
> > Am 19.04.2012 15:56, schrieb Borut Bolčina:
> >> Thanks Christian,
> >>
> >> I understand now what you were suggesting. The database type (vendor) will 
> >> be the same in all environments (mysql), but with different addresses, 
> >> engine types, usernames and passwords, which brings another topic up - 
> >> configuration (I will probably ask this in days to come).
> >>
> >> I will be separating datasources, it is just the case that I want a 
> >> working solution and then smooth it out.
> >>
> >> For a begginer it is very hard to get a hibernate mysql combo to work 
> >> (mine still does not). There are examples for persistence, but I had to 
> >> read a lot until I found that Hibernate does not even has bundles, 
> >> therefore tricks has to be performed.
> >>
> >> Is there "an official Karaf Hibernate Feature"? If not, what is the 
> >> suggested way to run Hibernate in Karaf? I am planning to use Hibernate 
> >> Search, Solr and Lucene by using Camel components, so I have lots of 
> >> ground to cover.
> >>
> >> Cheers,
> >> borut
> >>
> >
> > --
> > Christian Schneider
> > http://www.liquid-reality.de
> >
> > Open Source Architect
> > Talend Application Integration Division http://www.talend.com
> >
> 
> 
> 
> 
> 
> 
> 

Reply via email to