Created JIRA issue Felix-1018 with the files.
The remote shell has definitely a problem regarding multiple ShellServices
running (basically it will grab the latest one published,
as far as I understood the code), but this doesn't explain the 'services'
output I got. Could be my environment though, I'll download
a fresh copy of felix tomorrow and test.
/jog
On Tue, Mar 31, 2009 at 4:38 PM, Karl Pauls <[email protected]> wrote:
> Well, form looking at the code I can say that shell.remote might have
> an issue in regard to ShellService tracking. It is possible that it
> might not pick your service. Please fill a JIRA issue against
> shell.remote.
>
> I did test the services command and it seems to be working just fine
> for me. I would need to see your code to figure out what is going on.
> Again, please attach it to a JIRA or post it inline.
>
> regards,
>
> Karl
>
> On Tue, Mar 31, 2009 at 10:16 PM, Karl Pauls <[email protected]> wrote:
> > The mailing list doesn't allow attachments. Please create a JIRA issue
> > and attach the files there.
> >
> > regards,
> >
> > Karl
> >
> > On Tue, Mar 31, 2009 at 10:06 PM, Jacques-Olivier Goussard
> > <[email protected]> wrote:
> >> Hi
> >> I reproduces the pb with a very simplistic code. See attached
> JogShell.java
> >> and manifest. My manifest doesn't
> >> export anything and simply import the felix shell stuff.
> >> I start felix with:
> >> felix.auto.start.1= \
> >> file:repository/org.apache.felix.shell-1.0.2.jar \
> >> file:repository/com.jog.felix.1.0.0.jar \
> >> file:repository/org.apache.felix.shell.tui-1.0.2.jar \
> >> file:repository/org.apache.felix.shell.remote-1.0.2.jar
> >>
> >> I get:
> >> Welcome to Felix.
> >> =================
> >> DEBUG: WIRE: 1.0 -> org.ungoverned.osgi.service.shell -> 1.0
> >> DEBUG: WIRE: 1.0 -> org.osgi.service.startlevel -> 0
> >> DEBUG: WIRE: 1.0 -> org.apache.felix.shell -> 1.0
> >> DEBUG: WIRE: 1.0 -> org.osgi.framework -> 0
> >> DEBUG: WIRE: 1.0 -> org.osgi.service.packageadmin -> 0
> >> DEBUG: WIRE: 2.0 -> org.apache.felix.shell -> 1.0
> >> DEBUG: WIRE: 2.0 -> org.osgi.framework -> 0
> >> DEBUG: WIRE: 3.0 -> org.apache.felix.shell -> 1.0
> >> DEBUG: WIRE: 3.0 -> org.osgi.framework -> 0
> >> DEBUG: WIRE: 4.0 -> org.apache.felix.shell -> 1.0
> >> DEBUG: WIRE: 4.0 -> org.osgi.framework -> 0
> >> -> switch
> >> Felix shell ?true
> >> -> ps
> >> START LEVEL 1
> >> ID State Level Name
> >> [ 0] [Active ] [ 0] System Bundle (1.4.0)
> >> [ 1] [Active ] [ 1] Apache Felix Shell Service (1.0.2)
> >> [ 2] [Active ] [ 1] Jog Shell (1.0.0)
> >> [ 3] [Active ] [ 1] Apache Felix Shell TUI (1.0.2)
> >> [ 4] [Active ] [ 1] Apache Felix Remote Shell (1.0.2)
> >> -> services 2
> >>
> >> Jog Shell (2) provides:
> >> -----------------------
> >> ->
> >>
> >> So this states no services have been registered, though obviously shell
> TUI
> >> finds my ShellService instance as the
> >> 'switch' command shows.
> >> -> services -u 3
> >>
> >> Apache Felix Shell TUI (3) uses:
> >> --------------------------------
> >> ->
> >>
> >> So shell TUI doesn't seem to even use the service.
> >>
> >> Looks like a bug in the 'services' command no ?
> >> /jog
> >>
> >> On Tue, Mar 31, 2009 at 9:51 AM, Jacques-Olivier Goussard
> >> <[email protected]> wrote:
> >>>
> >>> Will do. I'll try to make a buindle that does only contain that code.
> >>> Do you have an explanation though on why the register in two steps
> would
> >>> lead to different results
> >>> than register in one step ?
> >>> /jog
> >>>
> >>> On Tue, Mar 31, 2009 at 9:34 AM, Karl Pauls <[email protected]>
> wrote:
> >>>>
> >>>> Make sure your are importing what you are exporting. The framework
> >>>> will filter services based on visibility of the classes. It sounds
> >>>> like your bundle gets wired to a different version of the packages
> >>>> (maybe because it is embedding its own version and not importing them
> >>>> or its only exporting). Maybe post your manifest files so that we can
> >>>> see whats going on (additionally, you could set the framework log
> >>>> level to debug to see the wiring information) ...
> >>>>
> >>>> regards,
> >>>>
> >>>> Karl
> >>>>
> >>>> On Tue, Mar 31, 2009 at 3:27 PM, Jacques-Olivier Goussard
> >>>> <[email protected]> wrote:
> >>>> > Hi
> >>>> > I'm seeing a strange behavior on felix 1.4 for
> >>>> > BundleContext.registerService(String[], Object,Properties).
> >>>> > I'm trying to install my own ShellService with this kind of code:
> >>>> > // Grab the default shell
> >>>> > mFelixShell =
> >>>> > mContext.getServiceReference(ShellService.class.getName());
> >>>> > // Register ourself as the highest ranking service, so that
> we
> >>>> > bypass Felix shell.
> >>>> > Properties props = new Properties();
> >>>> > props.put(Constants.SERVICE_RANKING, Integer.MAX_VALUE);
> >>>> > // Register as both a Command and a ShellService so that the
> >>>> > Felix
> >>>> > shell gets a command to switch to this one
> >>>> > mShellReg = mContext.registerService(new String[] {
> >>>> > ShellService.class.getName(),Command.class.getName() }, this,
> props);
> >>>> > And my autostart is
> >>>> >
> >>>> > felix.auto.start.1= \
> >>>> > file:repository/org.apache.felix.shell-1.0.2.jar \
> >>>> > file:repository/myownshell.jar \
> >>>> > file:repository/org.apache.felix.shell.tui-1.0.2.jar \
> >>>> > file:repository/org.apache.felix.shell.remote-1.0.2.jar
> >>>> >
> >>>> > so that TUI and remote get my shell service.
> >>>> >
> >>>> > If I do this I see that:
> >>>> > - 'services' on my install bundle does NOT list the Command or
> >>>> > ShellService
> >>>> > class. So my own shell doesn't seem to
> >>>> > be listed as exported.
> >>>> > - The Shell TUI module properly gets my own shell implementation
> >>>> > (though
> >>>> > it's not listed as exported !)
> >>>> > - The remote shell TUI doesn't get it - looking at the code, it's
> using
> >>>> > a
> >>>> > listener that seem to assume only one shell is ever registered.
> >>>> > The 'services -u' command on the remote shell shows that only the
> felix
> >>>> > shell service is used.
> >>>> >
> >>>> > Now, even stranger, if I register my services in two steps, using:
> >>>> > mShellReg = mContext.registerService(new String[] {
> >>>> > ShellService.class.getName()}, this, props);
> >>>> > mShellReg = mContext.registerService(new String[] {
> >>>> > Command.class.getName()}, this, props);
> >>>> >
> >>>> > Then both ShellTUI and Remote Shell now get my shell service. The
> >>>> > 'services'
> >>>> > command works for the ShellService - the
> >>>> > Command service is still not listed as exported by my own bundle nor
> >>>> > used by
> >>>> > the felix shell bundle - but the command is
> >>>> > there ! I.e. it does work, so the shell bundle must have found it...
> >>>> >
> >>>> > Any ideas ?
> >>>> > Thanks
> >>>> > /jog
> >>>> >
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> 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]
> >
>
>
>
> --
> Karl Pauls
> [email protected]
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>