[ 
https://issues.apache.org/jira/browse/FELIX-619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Richard S. Hall resolved FELIX-619.
-----------------------------------

    Resolution: Fixed

I added a configuration property to enable the workaround: shell.tui.checkinput

It is false by default. This probably won't solve all of our issues, but it is 
something. We can always re-address this issue if necessary in a future release.

> Shell.TUI causes "new java.io.ServerSocket()" to hang
> -----------------------------------------------------
>
>                 Key: FELIX-619
>                 URL: https://issues.apache.org/jira/browse/FELIX-619
>             Project: Felix
>          Issue Type: Bug
>          Components: Shell TUI
>    Affects Versions: felix-1.0.4
>         Environment: Windows; Best to run in a sandbox, fork java if 
> necessary (for full effect)... By sandbox, I mean a directory structure / 
> project area that's sterile, shall we say
>            Reporter: Craig Phillips
>            Assignee: Richard S. Hall
>            Priority: Minor
>             Fix For: shell.tui-1.4.0
>
>
> To save me from typing it in again, here's the dev mailing list excerpt:
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------
> I uncovered an issue in which the Shell.TUI will cause "new 
> java.io.ServerSocket()" to hang;
> Through process of elimination / gutting, pretty much to the point of a small 
> bundle with an activate() method (I'm using SCR) and a "new 
> ServerSocket(1234, 1)", with a couple log events pre and post, I determined 
> that the construction of the ServerSocket will not return (nor timeout, 
> IIRC), if the Shell.TUI bundle is started first;
> In other forms of the telnet shell, which do not use SCR/DeclarativeServices, 
> I remember I had to put install and start those bundles prior to the 
> Shell.TUI... However, because I changed the ordering a la SCR (my bundle is 
> installed and started, but SCR does not start my "service" and activation 
> thereof until my dependencies are satisfied, in this case to shell service 
> and log service), my bundle activation falls behind the shell.TUI 
> activation...
> So, the Shell.TUI must be causing some sort of conflict with ServerSocket ... 
> I did not dig deeper than that... Not sure if someone would ask me to file a 
> bug or not... I'm just putting this out there... maybe others have come 
> across this, but I don't know...
> I solved my immediate problem by simple removing Shell.TUI from the 
> auto.start list;
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------
> autotart:
> felix.auto.start.1= \
>  file:bundle/org.craig.shell.play01.jar \
>  file:bundle/org.osgi.compendium-1.0.1.jar \
>  file:bundle/org.apache.felix.shell-1.0.1.jar \
> file:bundle/org.apache.felix.shell.tui-1.0.1.ja
>  file:bundle/org.apache.felix.configadmin-1.0.1.jar \
>  file:bundle/org.apache.felix.bundlerepository-1.0.3.jar \
>  file:bundle/org.apache.felix.scr-1.0.0.jar \
>  file:bundle/pax-logging-api-1.0.0.jar \
>  file:bundle/pax-logging-service-1.0.0.jar \
>  file:bundle/pax-confman-propsloader-0.2.1.jar
> Play01.java:
> package org.craig.shell;
> import org.osgi.service.component.ComponentContext;
> import org.osgi.service.log.LogService;
> import org.apache.felix.shell.ShellService;
> import java.io.*;
> public class Play01
> {
>    protected ShellService shell = null;
>    protected LogService log = null;
>    protected void activate(ComponentContext context) throws Exception
>    {
>       ServerSocket myListener = new ServerSocket(1234, 1); // Note from Craig 
> - this will hang if TUI is started (presumably first)
>    }
>    protected void deactivate(ComponentContext context) throws Exception
>    {
>    }
>    protected void setLog(LogService log)
>    {
>       this.log = log;
>    }
>    protected void unsetLog(LogService log)
>    {
>       this.log = null;
>    }
>    protected void setShell(ShellService shell)
>    {
>       this.shell = shell;
>    }
>    protected void unsetShell(ShellService shell)
>    {
>       this.shell = null;
>    }
> This is the dot.bnd file, which uses the BND tool (as an ANT task), and 
> creates the manifest and OSGI-INF metadata thereof:
> Bundle-SymbolicName: org.craig.shell.play01
> Bundle-Name: org.craig.shell.play01 - shell play01
> Bundle-Description: shell play01
> Bundle-Version: 1.0.0
> Export-Package: org.craig.shell
> Import-Package: 
> org.osgi.framework,org.osgi.service.component,org.apache.felix.shell,org.osgi.service.log
> Service-Component=org.craig.shell.Play01; \
>    log=org.osgi.service.log.LogService; \
>    shell=org.apache.felix.shell.ShellService;

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to