celix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gabriele Ricciardi <lele.riccia...@gmail.com>
Subject Re: issue with celix
Date Thu, 02 Jun 2016 14:58:29 GMT
Hi Anupam,

In principle your code looks correct, so I tried (more or less) the same as
you and for me it works fine.

Just to be sure, and also to give you a reference example, find attached a
sample project based on the hello_world.

Probably you already know how to build a bundle, but just in case (and
assuming you already have Celix correctly installed on your machine)

- Untar the project
- Create a hello_props_build folder besides it
- cd hello_props_build && ccmake
 -DCELIX_DIR=<path_to_your_celix_install_path> ../hello_props
- make && make deploy
- cd deploy/hello_properties
- echo 'DM_HELLO=test.props' >> config.properties
- sh run.sh

This should print the Hello World and then the property just appended to
the config.properties .

I hope this clarify a bit!

Regards,

Gabriele Ricciardi


2016-06-01 12:10 GMT+02:00 Anupam Datta <adbd04@gmail.com>:

> I tried with config.properties but not sure how actually I can achieve
> that. Do you have any example code or clear docs ?
> I had added DM_HELLO="hello_properties" in config.properties file
> and in activator.c file I added :
>
> #define HELLO_ACTIVATOR "DM HELLO" //DM_HELLO is the name of the property
> mentioned in config.properties file
> char *dm_hello_data = NULL;
>
> Then inside bundleActivator_create(...
> I added bundleContext_getProperty(context, HELLO_ACTIVATOR,
> &dm_hello_data);
>
> Inside bundleActivator_start(....
> I added : printf("%sHello %s\n", dm_hello_data, data->word);
>
> But I could not get "hello_properties" printed in last line ie .
> printf("%sHello
> %s\n", dm_hello_data, data->word);
>
> Let me know what is the exact way of adding and retrieving from
> config.properties
>
> Thanks & Regards
> Anupam Datta
>
> On Fri, May 27, 2016 at 1:36 PM, Pepijn Noltes <pepijnnoltes@gmail.com>
> wrote:
>
> > Hi,
> >
> > On Thu, May 26, 2016 at 9:11 AM, Anupam Datta <adbd04@gmail.com> wrote:
> > > Hi Pepjin,
> > > I had some query regarding celix :
> > >
> > > 1. is it possible to pass arguments to bundles ? ie. at the time of
> > > starting I want to send some configurable parameters.
> >
> > Yes. Currently there are two ways.
> >
> >  1 Add a property to the config.properties file. A bundle can retrieve
> > the values using the bundleContext_getProperty. See [1] and [2].
> > When possible we try to follow the Java OSGi api (adapted to C).
> >  2 Declare a env variable. In case of the Celix
> > bundleContext_getProperty method if a property is not present in the
> > framework properties (read the config.properties file) the framework
> > will look if there is an environment variable present with the
> > requested property name
> >
> > [1]
> >
> https://osgi.org/javadoc/r4v43/core/org/osgi/framework/BundleContext.html#getProperty%28java.lang.String%29
> > [2]
> >
> https://github.com/apache/celix/blob/master/framework/public/include/bundle_context.h
> >
> > Another way is to use the config admin, this is more flexible but also
> > more complex. And there are still some TODO's left for the config
> > admin.
> >
> >
> > > 2. What is the way of remotely controlling and data capturing via celix
> > > bundles ? Is there any server where device can register itself via
> celix
> > > and from server through browser we can start stop bundle and fetch
> data?
> > > I had seen the remote shell and remote service folder but not much
> > > documentation is available there in the folders to understand how
> exactly
> > > it works.
> >
> > For remote controlling the bundles you can use the remote shell and
> Apache
> > ACE.
> > For remote shell you can try the remote_shell example (in the
> > deploy/remote_shell folder of the build).
> > When started use a telnet program to connect (telnet localhost 6666).
> > The remote_shell depends on the shell bundle.
> > Note that remote_shell is a nice feature to gain remote control, but
> > is (by design) not secure.
> >
> > An other option is to use Apache ACE. In this case different devices
> > can register to Apache ACE using the deployment_admin bundle. You can
> > then use Apache ACE to define which bundles should be deployed on
> > which devices. See Apache ACE [3] for more info. You can combine this
> > with remote shell for more control.
> >
> > [3] https://ace.apache.org/
> >
> >
> >
> > Remote services can be used to create distributed application base on
> > services. The Apache Celix remote services implementation works with
> > the Amdatu Remote Services implementation [4]
> > The remote-services-cfg example should work out of the box to give you an
> > idea.
> > Note that although technically remote services works, you still need
> > to put considerable effort in it to get something working.
> > We are aware of this and are working on a solution to simplify the use
> > of remote services, but for the time being manually effort is needed
> > to get it running.
> >
> > [4] http://www.amdatu.org/components/remote.html
> >
> > Could you specify in more details why do want to build / meand with
> > 'data capturing via celix' ? Because I am not sure if the remote
> > services is want you want (synchronized communication).
> >
> >
> >
> > >
> > > Thanks & Regards
> > > Anupam Datta
> > >
> > > On Tue, May 24, 2016 at 12:42 AM, Anupam Datta <adbd04@gmail.com>
> wrote:
> > >
> > >> Thank you Pepjin. I will definitely try that out.
> > >>
> > >> Thanks & Regards
> > >> Anupam Datta
> > >> On 24-May-2016 12:28 AM, "Pepijn Noltes" <pepijnnoltes@gmail.com>
> > wrote:
> > >>
> > >>> Hi Anupam,
> > >>>
> > >>> Please use the documentation at
> > >>> https://github.com/apache/celix/tree/develop/documents
> > >>> The idea is when a new Celix release has been made, the website will
> > >>> refer to documentation github.
> > >>>
> > >>> On Mon, May 23, 2016 at 11:52 AM, Anupam Datta <adbd04@gmail.com>
> > wrote:
> > >>> > Hi,
> > >>> > I had tried with git version as per the doc :
> > >>> > https://celix.apache.org/documentation/getting_started.html
> > >>> > after
> > >>> > make all
> > >>> > I did :
> > >>> > #install the framework and the bundles
> > >>> > sudo make install-all
> > >>> >
> > >>> > It showed me error : make: *** No rule to make target
> 'install-all'.
> > >>> Stop.
> > >>> >
> > >>> > So I did sudo make install
> > >>> >
> > >>> > log file attached : install_log.txt
> > >>> >
> > >>> > I created the demo project . After creating, built it and another
> > error
> > >>> > showed  :
> > >>> >
> > >>> > -- Using jar to create bundles
> > >>> > -- bundle function is deprecated. update target 'hello_001' to
> > >>> add_bundle
> > >>> > -- Configuring done
> > >>> > CMake Error at
> > >>> >
> /usr/local/share/celix/cmake/modules/cmake_celix/Packaging.cmake:149
> > >>> > (add_library):
> > >>> >   Cannot find source file:
> > >>> >
> > >>> >     (
> > >>> >
> > >>> >   Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++
> .hm
> > >>> .hpp
> > >>> >   .hxx .in .txx
> > >>> > Call Stack (most recent call first):
> > >>> >
> > >>>
> > /usr/local/share/celix/cmake/modules/cmake_celix/PackagingLegacy.cmake:41
> > >>> > (add_bundle)
> > >>> >   bundles/hello_001/CMakeLists.txt:4 (bundle)
> > >>> >
> > >>>
> > >>> The documentation was incorrect. The should be no parentheses around
> > >>> the bundle SOURCES.
> > >>> If you remove them, it should work ....
> > >>>
> > >>> >
> > >>> > CMake Error: CMake can not determine linker language for target:
> > >>> hello_001
> > >>> > CMake Error: Cannot determine link language for target "hello_001".
> > >>> > -- Generating done
> > >>> > -- Build files have been written to:
> > >>> > /home/anupam/Dev/ApacheCelix/git_celix/DM_proj_001-build
> > >>> >
> > >>> > So what was the issue with it? The directory structure of the
demo
> > proj
> > >>> :
> > >>> >
> > >>> > ├── DM_proj_001
> > >>> > │   ├── bundles
> > >>> > │   │   └── hello_001
> > >>> > │   │       ├── CMakeLists.txt
> > >>> > │   │       └── private
> > >>> > │   │           └── src
> > >>> > │   │               └── activator.c
> > >>> > │   └── CMakeLists.txt
> > >>> > └── DM_proj_001-build
> > >>> >     ├── bundles
> > >>> >     │   └── hello_001
> > >>> >     │       ├── CMakeFiles
> > >>> >     │       │   ├── CMakeDirectoryInformation.cmake
> > >>> >     │       │   ├── hello_001_bundle.dir
> > >>> >     │       │   │   ├── build.make
> > >>> >     │       │   │   ├── cmake_clean.cmake
> > >>> >     │       │   │   ├── DependInfo.cmake
> > >>> >     │       │   │   └── progress.make
> > >>> >     │       │   ├── hello_001.dir
> > >>> >     │       │   │   ├── build.make
> > >>> >     │       │   │   ├── cmake_clean.cmake
> > >>> >     │       │   │   ├── DependInfo.cmake
> > >>> >     │       │   │   ├── depend.make
> > >>> >     │       │   │   ├── flags.make
> > >>> >     │       │   │   └── progress.make
> > >>> >     │       │   └── progress.marks
> > >>> >     │       ├── cmake_install.cmake
> > >>> >     │       ├── hello_001_gen
> > >>> >     │       │   ├── MANIFEST.MF
> > >>> >     │       │   ├── MANIFEST.step1
> > >>> >     │       │   └── MANIFEST.step2
> > >>> >     │       └── Makefile
> > >>> >     ├── CMakeCache.txt
> > >>> >     ├── CMakeFiles
> > >>> >     │   ├── 3.5.1
> > >>> >     │   │   ├── CMakeCCompiler.cmake
> > >>> >     │   │   ├── CMakeDetermineCompilerABI_C.bin
> > >>> >     │   │   ├── CMakeSystem.cmake
> > >>> >     │   │   └── CompilerIdC
> > >>> >     │   │       ├── a.out
> > >>> >     │   │       └── CMakeCCompilerId.c
> > >>> >     │   ├── bundles.dir
> > >>> >     │   │   ├── build.make
> > >>> >     │   │   ├── cmake_clean.cmake
> > >>> >     │   │   ├── DependInfo.cmake
> > >>> >     │   │   └── progress.make
> > >>> >     │   ├── cmake.check_cache
> > >>> >     │   ├── CMakeDirectoryInformation.cmake
> > >>> >     │   ├── CMakeOutput.log
> > >>> >     │   ├── CMakeRuleHashes.txt
> > >>> >     │   ├── CMakeTmp
> > >>> >     │   ├── deploy.dir
> > >>> >     │   │   ├── build.make
> > >>> >     │   │   ├── cmake_clean.cmake
> > >>> >     │   │   ├── DependInfo.cmake
> > >>> >     │   │   └── progress.make
> > >>> >     │   ├── feature_tests.bin
> > >>> >     │   ├── feature_tests.c
> > >>> >     │   ├── Makefile2
> > >>> >     │   ├── Makefile.cmake
> > >>> >     │   ├── progress.marks
> > >>> >     │   ├── rat.dir
> > >>> >     │   │   ├── build.make
> > >>> >     │   │   ├── cmake_clean.cmake
> > >>> >     │   │   ├── DependInfo.cmake
> > >>> >     │   │   └── progress.make
> > >>> >     │   └── TargetDirectories.txt
> > >>> >     ├── cmake_install.cmake
> > >>> >     └── Makefile
> > >>> >
> > >>> > Please share your view on it. let me know if any other log is
> needed.
> > >>> >
> > >>> > Thanks & Regards
> > >>> > Anupam Datta
> > >>> >
> > >>>
> > >>> Greetings,
> > >>> Pepijn
> > >>>
> > >>
> >
>

Mime
View raw message