Hi,

On 31.03.2009, at 16:29, Joel Schuster wrote:

Ok, now I'm lost again...

I've been using the Eclipse plugin for creating the *.bnd and metadata.xml file. I right click on the xml to create my bundle jar.

How would I create that without the xml file? Would I simply hand write my MANIFEST.MF and make a jar file then? Will iPOJO do annotation searches of my jar?

Oh, you're using the Eclipse plugin. In this case your metadata.xml file has to exist as actions are made from this file (we're changing this), but only contains:
<ipojo>
</ipojo>

If you want a more regular way to create iPOJO bundle in Eclipse, you can follow this tutorial setting a ant-based project inside Eclipse:
http://felix.apache.org/site/apache-felix-ipojo-eclipse-integration.html


Regards,

Clement




Do you have any examples available of this methodology?

- Joel


-----Original Message-----
From: Clement Escoffier [mailto:[email protected]]
Sent: Tuesday, March 31, 2009 8:16 AM
To: [email protected]
Subject: Re: cfg files for PaxLogging and iPOJO

Hi,

On 31.03.2009, at 15:53, Joel Schuster wrote:


Clement,

I suppose so... I really don't have enough understanding yet to say
one way or the other. Are you saying that because the metadata.xml
has an <instance../> declaration one is being created via the
factory from that, and then another is being created via the factory
from the cfg file?

Here's the info from 'arch':

-> arch
Instance ArchCommand -> valid
Instance LogClientExampleInstance -> valid
Instance LogClientExample.154543ce-3bc2-4000-9cc8-c69c95fc090e ->
valid

So, two instances :-)

In fact, one if created by the cfg file (it's the second one this this
crazzy id). The second one is created from the xml file, right?

So, by using Managed Service Factory, each cfg file represents an
instance. You can create new instance by just writing a cfg file, or
dispose an instance by removing the cfg file from the folder.
Moreover, you can reconfigure it by updating a cfg file.

So, to get only one instance just remove the XML file completely (as
you use annotations, you don't need it at all). The cfg file is
equivalent to the <instance/> tag from the XML file.

(I'm going to write a FAQ on this topic.)




That would seem to bear out. Ok, and so if PaxLogging is implemented
similarly that's also why I'm seeing the two instances of that too.

So, I can use a managed service instead of a factory... that's where
I think I'm getting lost.

The managed service factory allows you to create and dispose instances
with the CFG file (one CFG file is one instance)
The managed service allows you to reconfigure an existing instance. In
this case, the instance has to be created before.


Regards,

Clement




There is the 'managedservice' attribute of the @Component
annotation. If I do not then have an <instance../> declaration in
the metadata.xml but rather just a <component../> would a cfg file
then be used for any created instances?

- Joel


-----Original Message-----
From: Clement Escoffier [mailto:[email protected]]
Sent: Tuesday, March 31, 2009 7:35 AM
To: [email protected]
Subject: Re: cfg files for PaxLogging and iPOJO

Hi,


The cfg file that you describe contains a ManagedServiceFactory
configuration. So, it replace the <instance> tag of the metadata.xml file. So, if you have both, it will create one instance from the xml
file and one from the cfg file, so 2 instances.

You can also use the ManagedService (not factory). Is that what you
would like?

Regards,

Clement



On 31.03.2009, at 00:04, Joel Schuster wrote:

I take it back... it's working. Well, mostly. There are two
instances :P.

One from the File Installer and the other from the Configuration
Updater.

I'm wondering why they both wouldn't use the same instance.

- Joel

-----Original Message-----
From: Joel Schuster [mailto:[email protected]]
Sent: Monday, March 30, 2009 3:58 PM
To: '[email protected]'
Subject: RE: cfg files for PaxLogging and iPOJO

Karl,

Still a no-go, I'll look at it some more tomorrow.

Thanks for all the help.

- Joel

-----Original Message-----
From: Karl Pauls [mailto:[email protected]]
Sent: Monday, March 30, 2009 3:50 PM
To: [email protected]
Subject: Re: cfg files for PaxLogging and iPOJO

The number is the number of the factory configuration to create.
As I
said, it is a managed service factory not only a managed service.
You
are free to pick any number you like I think.

regards,

Karl

On Mon, Mar 30, 2009 at 11:43 PM, Joel Schuster <[email protected] >
wrote:
I still can't seem to get this working... I tried both the
component
name and the instance name.

How would I determine what the -<number> would be?

Based on what I read here: http://felix.apache.org/site/apache-
felix-
file-install.html

It seems to say that it would be something like:
LogClientExample.cfg
like you were saying.

Also, just because it's 'REQUIRED' doesn't keep it from being
installed
and activated.

Here's the info from the Configuration Status tab of the Web
Console:

48=[org.apache.felix.ipojo.Factory,
org.osgi.service.cm.ManagedServiceFactory]
Bundle=com.examples.logclient (0) "com.examples.logclient"
Using Bundles=[org.apache.felix.configadmin (1.0.10) "Apache
Felix
Configuration Admin Service"]
component.class=com.examples.logclient.LogClient
component.description=factory name="LogClientExample"
state="valid"
bundle="24" implementation-
class="com.examples.logclient.LogClient"
     missinghandlers list="[]"
     property name="logString" value="REQUIRED"
type="java.lang.String"
     requiredhandlers list="[org.apache.felix.ipojo:requires,
org.apache.felix.ipojo:callback,
org.apache.felix.ipojo:properties,
org.apache.felix.ipojo:architecture]"



component
.properties=[org.apache.felix.ipojo.architecture.PropertyDescrip
t...@b30913]
component.providedServiceSpecifications=[]
factory.name=LogClientExample
factory.state=1
service.pid=LogClientExample




-----Original Message-----
From: Karl Pauls [mailto:[email protected]]
Sent: Monday, March 30, 2009 3:22 PM
To: [email protected]
Subject: Re: cfg files for PaxLogging and iPOJO

Iirc, the instance name is used for the configuration and it is
really
a managed service factory -- hence, the file should be named
something
like this:

LogClientExample-4711.cfg

regards,

Karl

p.s.: In case you want your service to only be created and
activated
if there is  a valid properties configuration then add:
@Property(mandatory=true)


On Mon, Mar 30, 2009 at 11:10 PM, Joel Schuster <[email protected]

wrote:
I got the PaxLogging config working. But the iPOJO isn't.

Here's some code:

package com.example;

import ...*...

@Component(name="LogClientExample", immediate=true)
public class LogClient implements Runnable {

     @Requires
     private LogService logService;

     private boolean running;

     @Property
     private String logString;

@Override
     public void run() {
             logService.log( LogService.LOG_INFO, "LogClient
run().");
             while( running) {
                     logService.log( LogService.LOG_INFO,
"LogClient
Running..." + logString);
                     try {
                             Thread.sleep( 10000);
                     } catch (InterruptedException e) {
                             logService.log(
LogService.LOG_WARNING,
"", e);
                     }
             }
     }

     @Validate
     public void start() {
             logService.log( LogService.LOG_INFO, "LogClient
start()");
             running = true;
             new Thread( this).start();
     }

     @Invalidate
     public void stop() {
             logService.log( LogService.LOG_INFO, "LogClient
stop()");
             running = false;
     }
}

Then I've created a file called
'com.example.LogClientExample.cfg'
(I
tried just com.example.LogClient.cfg as well) with one line:

logString=New Hello


The logs come out as "LogClient Running...null"

Unless I put this in the metadata.xml:

<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
 xsi:schemaLocation="org.apache.felix.ipojo
http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd";
 xmlns="org.apache.felix.ipojo">
<!-- declare your component types and instances here -->
     <instance component="LogClientExample"
name="LogClientExampleInstance">
             <property name="logString"
type="java.lang.String"
value="Hello" />
     </instance>
</ipojo>





-----Original Message-----
From: Clement Escoffier [mailto:[email protected]]
Sent: Monday, March 30, 2009 12:45 PM
To: [email protected]
Subject: Re: cfg files for PaxLogging and iPOJO

Hi,

To use cfg file you need:
- File install configured on a folder (let's say 'foo')
- A configuration admin implementation (like the Apache Felix
one
:-
))

Then, create a cfg file named factory-name-id. The factory
name is
generally the class name of your pojo.
In this file, add one line per property:
prop1=value1
prop2=value2

Copy this file in the 'foo' folder, that's it:
File install will read the file and push the configuration in
the
configuration admin.
The configuration admin will push the configuration to iPOJO
iPOJO will create the instance and configure it (i.e you don't
need
metadata.xml file at all)

Regards,


Clement


On 30.03.2009, at 20:26, Stuart McCulloch wrote:

2009/3/30 Joel Schuster <[email protected]>

I've started using PaxLogging as my LogService. However, I
can't
seem to
figure out how to configure it.


you need to configure it via the ConfigAdmin service using a
configuration
pid "org.ops4j.pax.logging"
to point to the contents of the log4j properties file - you
can
do
this
using Pax ConfMan or FileInstall
from Apache Felix (both let you associate properties files
with
configuration pids)

http://wiki.ops4j.org/display/ops4j/Pax+Logging#PaxLogging-
Configuration

you'll also need a working ConfigAdmin implementation, such
as
the
Apache
Felix configadmin bundle

HTH

I've tried creating various cfg files to no avail.

As a an attempt to better understand how this should work
I've
created a
quick iPOJO based LogClient which @Requires the LogService.

This works great, so I added a String based @Property.

However, I can't seem to set the property outside of the
metadata.xml file.
Shouldn't I be able to create a cfg file?

If I can get that working it seems I should then be able to
figure
out a
cfg file for the PaxLogging too.


I'll let Clement answer the iPOJO specifics, but as long as
you
can
associate the "org.ops4j.pax.logging"
configuration pid to the log4j properties using iPOJO then
it's
just
a
matter of making sure you have a
ConfigAdmin implementation installed to pass the
configuration
onto
the
Pax-Logging service

(note you also need both the Pax-Logging API and the Pax-
Logging
service
bundles installed)






--
Cheers, Stuart


----------------------------------------------------------------
--
--
-
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


-----------------------------------------------------------------
--
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]





--
Karl Pauls
[email protected]

------------------------------------------------------------------
--
-
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


-------------------------------------------------------------------
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]





--
Karl Pauls
[email protected]

--------------------------------------------------------------------
-
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to