Hi,

> I think i had H2 DB running in osgi a few years ago

I'm quite sure you are not the only person who ever used H2 in OSGi :-)
FilePath is old.

> > Well, is there a stack trace? Could you post it?
> No error or stack trace... it just stops..

In my experience Java threads don't "just stop" :-) I'm quite sure it's a
runtime exception you didn't catch. (In theory the thread might be blocked
or wait, but I doubt it)

What I would do is add "try { .. } catch (Throwable e) {
e.printStackTrace(); }". If that doesn't help, I would debug it.

Regards,
Thomas



On Thu, Sep 12, 2013 at 2:01 AM, Paul F Fraser <[email protected]> wrote:

>  On 12/09/13 04:08, Thomas Mueller wrote:
>
> Hi,
>
>  Which version of H2 did you try?
>
> 1.3.173
>
>
>  > It bombs out
>
>  Well, is there a stack trace? Could you post it?
>
>   No error or stack trace... it just stops..
>
>   As far as I know, H2 works in an OSGi environment. The regular database
> also uses FilePath...
>
> I think i had H2 DB running in osgi a few years ago. How long has FilePath
> been used?
>
> The ClassForName problem is covered here
> http://njbartlett.name/2010/08/30/osgi-readiness-loading-classes.html
>
> The h2 code where it stops :-
>
>    void open() {
>         meta = new MVMapConcurrent<String,
> String>(StringDataType.INSTANCE, StringDataType.INSTANCE);
>         HashMap<String, String> c = New.hashMap();
>         c.put("id", "0");
>         c.put("createVersion", Long.toString(currentVersion));
>         meta.init(this, c);
>         if (fileName == null) {
>             return;
>         }
>         FilePath parent = FilePath.get(fileName).getParent(); <<<< stops
> here
>         if (!parent.exists()) {
>             throw DataUtils.newIllegalArgumentException("Directory does
> not exist: {0}", parent);
>         }
>
>
>    private static void registerDefaultProviders() {
>         if (providers == null || defaultProvider == null) {
>             Map<String, FilePath> map =
> Collections.synchronizedMap(New.<String, FilePath>hashMap());
>             for (String c : new String[] {
>                     "org.h2.store.fs.FilePathDisk",
>                     "org.h2.store.fs.FilePathMem",
>                     "org.h2.store.fs.FilePathMemLZF",
>                     "org.h2.store.fs.FilePathNioMem",
>                     "org.h2.store.fs.FilePathNioMemLZF",
>                     "org.h2.store.fs.FilePathSplit",
>                     "org.h2.store.fs.FilePathNio",
>                     "org.h2.store.fs.FilePathNioMapped",
>                     "org.h2.store.fs.FilePathZip"
>             }) {
>                 try {
>                     FilePath p = (FilePath)
> Class.forName(c).newInstance();  <<<<<probably because of this
>                     map.put(p.getScheme(), p);
>                     if (defaultProvider == null) {
>                         defaultProvider = p;
>                     }
>                 } catch (Exception e) {
>                     // ignore - the files may be excluded in purpose
>                 }
>             }
>             providers = map;
>
> Regards
>
> Paul
>
>  --
> You received this message because you are subscribed to the Google Groups
> "H2 Database" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/h2-database.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to