Mantis Bugtracker
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0001846 [Resin] minor always 07-03-07 08:53 11-01-07 09:00
Reporter ferg View Status public  
Assigned To ferg
Priority normal Resolution fixed  
Status closed   Product Version 3.1.1
Summary 0001846: JCA RAR files with native libraries
Description (rep by Ray Cromwell)

  I couldn't find any mention of this in the documentation, I'm using the latest Resin Pro 3.1 snap on both Linux and OSX with the same results. I have a WAR with an embedded RAR. The RAR contains a JCA component that includes a native library in its root ( libfoo.jnilib on mac, libfoo.so on Linux). The JCA code has been tested and works without the System.loadLibrary(), and the native code has been tested and loads successfully under Jetty using a non-JCA WAR that loads it directly (but requires manually placing the library in the java.library.path)

  I was hoping that by creating a JCA, native library deployment would work automatically without having to hack the LD_LIBRARY_PATH or java.library.path, since it seems that part of the reason for JCA's existence is to provide a mechanism for deploying native code in a container (apart from the inbound stuff, work api, etc)

  However, I have not been able to get Resin to load the RAR's library. It deploys properly, and non-native routines can be accessed and run from the web application, but anything which triggers the System.loadLIbrary () fails to find it. Does Resin support this functionality? If not, couldn't Resin, after unpacking the RARs automatically copy any native libs (.so/.dll/.jnilib) to the libexec directory or some other standard path that would be in the startup java.library.path? It seems some containers support this capability, and some require manual intervention.

 It would be nice to have an automated capability however, since I am planning on deploying my app to several machines across a cluster, and if I have to intervene, it means I have to remotely execute something which copies the libraries and/or reconfigures the library path, and I'd rather not have to roll-my-own hacks on each machine to deal with this. As a workaround, I could see deploying a servlet which when pinged would perform the required deployment step (copying the native libs), but that requires the servlet to have special knowledge of the unpacked directory location/name/layout, which seems hacking.

 Also, the documentation suggests that the <connector>/<resource> elements can only be in web-app, host, etc. I'm wondering if I can create a resin-ra.xml file which contains my jndi bindings, and if so, what's the root element and namespace for this file?

Additional Information
Attached Files

- Relationships

- Notes
(0002429)
ferg
11-01-07 09:00

server/30g{0,1}
 

- Issue History
Date Modified Username Field Change
07-03-07 08:53 ferg New Issue
11-01-07 09:00 ferg Note Added: 0002429
11-01-07 09:00 ferg Assigned To  => ferg
11-01-07 09:00 ferg Status new => closed
11-01-07 09:00 ferg Resolution open => fixed
11-01-07 09:00 ferg Fixed in Version  => 3.1.4


Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
28 total queries executed.
25 unique queries executed.
Powered by Mantis Bugtracker