aries-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bartosz Kowalewski <kowalewski.bart...@gmail.com>
Subject Re: using the blog sample
Date Fri, 25 Jun 2010 07:30:32 GMT
Jamie,

I think that in order to minimize the probability of running into
issues it would be advisable to try to use the same set of bundles as
it is now used with Eclipse in the Blog assembly or Blog itests. Of
course some changes are probably required, but currently you're using
a set of bundles that is quite different from the one that is employed
when running the blog sample. Please take a look at the Aries sources:
1. samples\blog\blog-assembly\src\main\filtered-resources\configuration\config.ini
2. samples\blog\blog-itests\src\test\java\org\apache\aries\samples\blog\itests\JpaBlogSampleWithEbaTest.java
(this one uses EBA, so you won't see blog bundles there)

This should help you to identofy the bundles that you're missing.

In order to retrieve artifact versions for all these bundles, you can
for example take a look at the Maven effective pom for the itests
project - 'mvn help:effective-pom'.

Best regards,
  Bartek


2010/6/25 Valentin Mahrwald <vmahrwald@googlemail.com>:
> Hi Jamie,
> comments below.
>
> On 24 Jun 2010, at 23:12, jamie campbell wrote:
>
> Hello,
>
> I'm trying to get the blog sample (specifically with jpa persistence)
> working within felix/karaf 1.6.0 .. if docs on how to do this already exist,
> then I'd love a link to them.
>
> Otherwise.. here's what I've got so far..
>
> my startup.properties file has "the usual", then at the end I have:
>
> <><><><><><><><><><><>
> #needed by openjpa
> javax.persistence/com.springsource.javax.persistence/2.0.0/com.springsource.javax.persistence-2.0.0.jar=35
> org.apache.commons/com.springsource.org.apache.commons.collections/3.2.0/com.springsource.org.apache.commons.collections-3.2.0.jar=35
> org.apache.commons/com.springsource.org.apache.commons.lang/2.4.0/com.springsource.org.apache.commons.lang-2.4.0.jar=35
> org.apache.commons/com.springsource.org.apache.commons.pool/1.5.3/com.springsource.org.apache.commons.pool-1.5.3.jar=35
> javax.transaction/com.springsource.javax.transaction/1.1.0/com.springsource.javax.transaction-1.1.0.jar=35
> net.sourceforge.serp/com.springsource.serp/1.13.1/com.springsource.serp-1.13.1.jar=35
>
> org.apache.openjpa/openjpa/2.0.0/openjpa-2.0.0.jar=40
>
> org.apache.derby/derby/10.6.1.0/derby-10.6.1.0.jar=42
>
> #aries jpa base level stuff
> org.apache.aries.jpa/org.apache.aries.jpa.api/0.1-incubating/org.apache.aries.jpa.api-0.1-incubating.jar=43
> org.apache.aries/org.apache.aries.util/0.1-incubating/org.apache.aries.util-0.1-incubating.jar=43
> #org.apache.aries.jpa/org.apache.aries.jpa.container/0.1-incubating/org.apache.aries.jpa.container-0.1-incubating.jar=44
> org.apache.aries.jpa/org.apache.aries.jpa.blueprint.aries/0.1-incubating/org.apache.aries.jpa.blueprint.aries-0.1-incubating.jar=44
>
> #aries blog example stuff
> org.apache.aries.samples.blog/org.apache.aries.samples.blog.api/0.1-incubating/org.apache.aries.samples.blog.api-0.1-incubating.jar=45
> org.apache.aries.samples.blog/org.apache.aries.samples.blog.datasource/0.1-incubating/org.apache.aries.samples.blog.datasource-0.1-incubating.jar=46
> org.apache.aries.samples.blog/org.apache.aries.samples.blog.biz/0.1-incubating/org.apache.aries.samples.blog.biz-0.1-incubating.jar=47
> org.apache.aries.samples.blog/org.apache.aries.samples.blog.persistence.jpa/0.1-incubating/org.apache.aries.samples.blog.persistence.jpa-0.1-incubating.jar=48
> <><><><><><><><><><><><><><><><><><><><><><>
>
> I'm unsure whether the jpa.container or jpa.blueprint.aries or both are
> needed or in what order.  Whichever one I do generates a warning related to
> not having a provider   (eg jpa.container gets WARN  | rint Extender: 3 |
> container                        | er.impl.PersistenceBundleManager
 549 |
> 45 - org.apache.aries.jpa.container - 0.1.0.incubating | There are no
> providers available.)
>
> Both jpa.container and jpa.blueprint.aries are needed for the blog sample as
> well as the jpa.container.context bundle, which appears to be missing from
> your list.
> - jpa.container provides the core integration of scanning persistence
> bundles and creating persistence units
> - jpa.container.context provides container-managed JPA and in particular
> allows container-managed EntityMangers to be created from the persistence
> units provided by jpa.container
> - jpa.container.blueprint provides the extension namespace for injecting jpa
> resources directly into a blueprint bean.
> All three are needed to make the snippet below in the blog.persistence.jpa
> bundle work:
> <bean id="persistenceImpl"
> class="org.apache.aries.samples.blog.persistence.jpa.BlogPersistenceServiceImpl">
> <tx:transaction method="*" value="Required" />
> <jpa:context property="entityManager" unitname="blogExample" />
> </bean>
> The warning is generated because apparently there are no persistence
> providers present when the jpa container tries to find one for the blog
> persistence bundle. To be an OSGi compatible persistence provider, openjpa
> 2.0.0 needs to publish a service with interface
> javax.persistence.spi.PersistenceProvider and property
> javax.persistence.provider, which gives the implementation class name.
> Now, the version of openjpa we use in the samples (beta3) is compliant and
> as far as I recall the release one should be as well but it is very worth
> checking that the PersistenceProvider service gets registered. The other
> option is that there is a race condition between the service coming up and
> the blog.persistence bundle being parsed.
>
> I also get a warning about not being able to do persistence units (WARN  |
> rint Extender: 3 | container                        |
> er.impl.PersistenceBundleManager  305 | 45 - org.apache.aries.jpa.container
> - 0.1.0.incubating | The bundle
> org.apache.aries.samples.blog.persistence.jpa_0.1.0.incubating is already
> active, it may not be possible to create managed persistence units for it.)
>
> This again to me suggests that there is a race condition in the way that the
> bundles are started. The blog.persistence.jpa bundle should not be active
> when it is scanned by the jpa.container. My guess is that the root problem
> is that the jpa.container is blueprint managed, which means the jpa extender
> gets started asynchronously to the jpa.container bundle starting and hence
> potentially later then the blog bundles, which come directly afterwards in
> the start order. If I remember correctly zoe had similar issues with setting
> up the blog sample itests.
> To avoid the race condition you could (for the moment) not start the blog
> bundles manually after the runtime has come up. That said I believe this
> warning is harmless for a case like the blog sample where the JPA entities
> are pre-enhanced.
>
> and jndi lookup failures (ERROR | rint Extender: 3 | container
>                        | nit.impl.PersistenceUnitInfoImpl  103
| 45 -
> org.apache.aries.jpa.container - 0.1.0.incubating | No JTA datasource could
> be located using the JNDI name
> aries:services/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/blogdb)
> javax.naming.NoInitialContextException: Need to specify class name in
> environment or system property, or as an applet parameter, or in an
> application resource file:  java.naming.factory.initial) and (ERROR | rint
> Extender: 3 | container                        |
> nit.impl.PersistenceUnitInfoImpl  141 | 45 - org.apache.aries.jpa.container
> - 0.1.0.incubating | No Non JTA datasource could be located using the JNDI
> name
> aries:services/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/blogdbnojta)
> javax.naming.NoInitialContextException: Need to specify class name in
> environment or system property, or as an applet parameter, or in an
> application resource file:  java.naming.factory.initial)
>
> As far as I can see you are missing the jndi bundles (api, core and url). I
> am not hundred percent certain that their absence explains the error message
> you see. However, without those
> bundles the aries:services JNDI namespace will not be defined.
>
> There are also a pile of namespace handler warnings but I get the impression
> from googling that this may be an issue with karaf 1.6.0 itself rather than
> having anything to do with Aries.
>
> Am I missing some bundles?  Or bundles in the wrong order?  Or I need to
> write some additional bundles to properly load the blog sample?  It seems I
> need to write one or more bundles to *use* the BloggingService, but I wasn't
> sure if I needed to write bundles to get it to the point of being *ready*
> for use...
>
> The BloggingService is used by the blog.web bundle, which appears to be
> missing from your collection of blog bundles. Without the web bundle the
> blog sample doesn't really do anything :)
> For the web bundle to run you will also need and OSGi Web Extender such as
> Pax Web if you haven't got one in the runtime already.
>
> If I can get it going I'd be happy to write a tutorial to add to the
> tutorials section for this type of use :)
>
> That would be awesome :)
>
> -Jamie
>
>

Mime
View raw message