Here's some more info on creating your own custom features:

http://fusesource.com/docs/esb/4.2/deploy_osgi/DeployFeatures-Create.html

BTW in general its a bit more flexible if you deploy your features
repository (i.e. the features.xml) up to maven, that way anyone else can
install your feature via:

 features:addUrl mvn:groudId/artifactId/version/xml/features

as opposed to using a direct file: URL pointing to a local filesystem
location.

Note also there's a features:refreshUrl command that allows you to pick up
any changes to your features repository.

Cheers,
Eoghan

2010/3/10 Alexandros Karypidis <[email protected]>

> Ok, I've managed to create a "features.xml" and install it with
> "features:addUrl file:/c:/path/to/my-features.xml"
>
> So, to reiterate, deploying a module into SMX is really as hard as:
>
> a) Edit "org.ops4j.pax.url.mvn.cfg" to add your local repository
> b) Create your maven project for building your bundle(s)
> c) Create a "features.xml" and define a feature, listing all necessary
> dependencies (I wonder how to determine these).
>
> And repeat (work cycle)
>
> 1) mvn install
> 2) features:uninstall/install your-defined-feature-from(c)
>
> If while coding you need a dependency, you must update (c).
>
> This is really the "proper" way?
>
>
> On 10/3/2010 7:03 μμ, Alexandros Karypidis wrote:
>
>> Hello Eoghan,
>>
>> Thank you very much for your help. I added my local repository as you
>> suggested and indeed it led to having SMX pick up my modified version of the
>> cxf-osgi bundle during deployment of "examples-cxf-osgi".
>>
>> There's still one thing bugging me however: while the above allows me to
>> do that for a bundle called "cxf-osgi", what happens if I want to create my
>> own sample project, with another name. Currently, this method is based on
>> the fact that a proper "feature" is defined in the "default features.xml"
>> file and overrides the search order of search repositories so that a
>> "synonymous local bundle" is used.
>>
>> Ultimately, I suppose I have to degine my own features.xml somehow so that
>> I could do things like:
>>
>> <feature name="my-name" version="0.0.1">
>> <feature version="4.2.0-fuse-01-00">cxf-osgi</feature>
>> <bundle>mvn:my.example.project/other-bundle-name/0.0.1</bundle>
>> </feature>
>>
>> Where would I be able to configure such "features"?
>>
>> On 10/3/2010 1:08 μμ, Eoghan Glynn wrote:
>>
>>> Yes, you're correct ... a pre-built bundle is picked up by default from
>>> the
>>> $SMX_HOME/system directory, which you can confirm as follows:
>>>
>>> ka...@root>  log:set TRACE
>>> ka...@root>  features:install examples-cxf-osgi
>>>
>>> Then look in $SMX_HOME/data/log/karaf.log and you should see a line like:
>>>
>>> 10:36:29,361 | TRACE | l Console Thread | Connection
>>>   |
>>> .pax.url.mvn.internal.Connection  157 | Downloading [Version
>>> [4.2.0-fuse-01-00] from URL
>>> [file:/work/kits/apache-servicemix-4.2.0-fuse-01-00/system/org/apache/servicemix/examples/cxf-osgi/4.2.0-fuse-01-00/cxf-osgi-4.2.0-fuse-01-00.jar]]
>>>
>>>
>>> Now this is all controlled by the PAX mvn URL config file
>>> (etc/org.ops4j.pax.url.mvn.cfg) which you can easily change, by modifying
>>> the following line:
>>>
>>>
>>> org.ops4j.pax.url.mvn.defaultRepositories=file:${karaf.home}/${karaf.default.reposito...@snapshots
>>>
>>> replacing it with something like:
>>>
>>> org.ops4j.pax.url.mvn.defaultRepositories=file:///home/alex/.m2/repository,
>>>
>>> file:${karaf.home}/${karaf.default.reposito...@snapshots
>>>
>>> Then blow away your data directory and repeat the process above, and you
>>> should see the bundle from your local maven repo being pulled in.
>>>
>>> Cheers,
>>> Eoghan
>>>
>>>
>>>
>>> On 9 March 2010 23:26, Alexandros Karypidis<[email protected]>  wrote:
>>>
>>>   From what I understand "examples-cxf-osgi" simply deploys a _pre-built_
>>>> example from a maven repository. I want to deploy my own compilation of
>>>> the
>>>> example, so that I am able to play around, modifying it.
>>>>
>>>> I did locate the cxf-osgi feature inside
>>>>
>>>> http://repo.fusesource.com/maven2/org/apache/servicemix/apache-servicemix/4.2.0-fuse-01-00/apache-servicemix-4.2.0-fuse-01-00-features.xmlandit
>>>>  does pull the pre-compiled example via maven; the relevant fragment
>>>> is:
>>>>
>>>> ...
>>>>
>>>> <feature name="examples-cxf-osgi" version="4.2.0-fuse-01-00">
>>>> <feature version="4.2.0-fuse-01-00">cxf-osgi</feature>
>>>>
>>>> <bundle>mvn:org.apache.servicemix.examples/cxf-osgi/4.2.0-fuse-01-00</bundle>
>>>>
>>>> </feature>
>>>> ...
>>>>
>>>>
>>>>
>>>> On 9/3/2010 11:37 μμ, Eoghan Glynn wrote:
>>>>
>>>>  To be fair, the demo README.txt instructs you to deploy via:
>>>>>
>>>>>  features:install examples-cxf-osgi
>>>>>
>>>>> Now the definition of this feature encodes a dependency on the cxf-osgi
>>>>> feature:
>>>>>
>>>>> <feature name="examples-cxf-osgi" version="4.2.0-fuse-01-00">
>>>>> <feature version="4.2.0-fuse-01-00">cxf-osgi</feature>
>>>>>
>>>>>
>>>>> <bundle>mvn:org.apache.servicemix.examples/cxf-osgi/4.2.0-fuse-01-00</bundle>
>>>>>
>>>>> </feature>
>>>>>
>>>>> Which is why the instructions don't explicitly state that you must
>>>>> install
>>>>> the cxf-osgi feature, the assumption being that this would have been
>>>>> pulled
>>>>> in when you installed the examples-cxf-osgi feature as instructed.
>>>>>
>>>>> Cheers,
>>>>> Eoghan
>>>>>
>>>>>
>>>>> On 9 March 2010 19:34, Alexandros Karypidis<[email protected]>
>>>>> wrote:
>>>>>
>>>>>
>>>>>
>>>>>  Hello,
>>>>>>
>>>>>> I'm looking at SMX4.2 (from fusesource actually) and trying to play
>>>>>> with
>>>>>> the examples. I must say, I'm finding the process of deploying
>>>>>> something
>>>>>> into SMX to be a real pain. I've tried both the OSGi packaging
>>>>>> approach
>>>>>> and
>>>>>> had limited success with it. This seems very unusual (deploying
>>>>>> something
>>>>>> shouldn't be that hard), so I'm thinking that I'm missing something.
>>>>>> Here's
>>>>>> my experience with each and I'm hoping someone will step in to
>>>>>> enlighten
>>>>>> a
>>>>>> new user:
>>>>>>
>>>>>> Started with "examples/cxf-osgi":
>>>>>> =============================================
>>>>>> 1) compiled with: "mvn install"
>>>>>> 2) deploy with: "copy target\cxf-osgi-4.2.0-fuse-01-00.jar
>>>>>> c:\fuse42\deploy"
>>>>>> 3) NO JOY;
>>>>>>
>>>>>> Looking at the CXF servlet (http://localhost:8181/cxf) I see the
>>>>>> service
>>>>>> but is endpoint address ("/HelloWorld") is wrong. I can't access the
>>>>>> WSDL
>>>>>> contract, nor invoke it. So I start looking into things:
>>>>>>
>>>>>> 4) Hours of pain and trial and error
>>>>>> 5) At the Karaf console: "features:install cxf-osgi"
>>>>>> 6) JOY!
>>>>>>
>>>>>> Suddenly, everything works; apparently the "cxf-osgi feature" was
>>>>>> needed
>>>>>> in
>>>>>> order for the example to work. The feature is declared in "
>>>>>>
>>>>>>
>>>>>> http://repo.fusesource.com/maven2/org/apache/servicemix/apache-servicemix/4.2.0-fuse-01-00/apache-servicemix-4.2.0-fuse-01-00-features.xml
>>>>>> ".
>>>>>> What's strange is that you MUST install it _AFTER_ deploying the
>>>>>> bundle.
>>>>>> If
>>>>>> you start up the ESB, do a "features:install cxf-osgi" and then copy
>>>>>> your
>>>>>> jar into the "deploy" folder, things DO NOT work (it's as if you just
>>>>>> did
>>>>>> the first 3 steps).
>>>>>>
>>>>>> So, in order to play with the example, every time I make a change I
>>>>>> must
>>>>>> copy the jar to the deploy folder and re-install the "cxf-osgi"
>>>>>> feature
>>>>>> from
>>>>>> the console. The work development cycle is thus:
>>>>>>
>>>>>> 1) edit the code
>>>>>> 2) "mvn install"
>>>>>> 3) copy my.jar c:\fuse42\deploy
>>>>>> 4) @karaf: "features:uninstall cxf-osgi"
>>>>>> 5) @karaf: "features:install cxf-osgi"
>>>>>> 6) check your code to see how it behaves
>>>>>>
>>>>>> There must be a better way...
>>>>>>
>>>>>
>>>
>

Reply via email to