Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Gogo Commands for Remote Services Development

For ECF's Photon release, a number of commands have been added to allow the listing of several ECF and OSGi Remote Service Admin (RSA) entities:

ECF entities

Namespaces

IContainers

Container Type Descriptions/Config Type

RSA entities

RSA Exported Services

RSA Imported Endpoints

There are also RSA commands to export a service and import an endpoint description via the command line.

These commands have been added via the Apache Felix Gogo Shell which is used for the console in Eclipse, as well as other OSGi runtimes like Felix, Karaf, and others.

Required ECF Bundles

In addition to the ECF RSA Impl bundles, two bundles are required: org.eclipse.ecf.console and org.eclipse.ecf.osgi.services.remoteserviceadmin.console. The ECF Remote Services examples and tutorials currently include these two bundles, as do the Bndtools templates.

Commands and Output

Namespaces

Typing help will list all the available commands with their scope, and typing help <command> will produce help for a specific command. e.g.

g! 
g! help
ecf:exportservice
ecf:expsvc
ecf:importservice
ecf:impsvc
ecf:lcfgs
ecf:lcs
ecf:lctds
ecf:lexps
ecf:limps
ecf:listconfigs
ecf:listcontainers
ecf:listexports
ecf:listimports
ecf:listnamespaces
ecf:listtypedescriptions
ecf:lns
ecf:rsadebug
ecf:unexportservice
ecf:unexpsvc
ecf:unimportservice
ecf:unimpsvc
ecf:updateservice
ecf:updsvc
felix:bundlelevel
<other felix, scr, gogo scoped commands>
g! help listnamespaces

listnamespaces
   scope: ecf
   parameters:
      Namespace   Namespace name to list (String)

listnamespaces - List ECF ID namespaces
   scope: ecf
g! 

Command: listnamespaces, lns

Parameters: None -- Produces a table of all Namespaces by Namespace Name; Namespace Name -- Details about that Namespace

Example:

g! lns
Namespace Name
org.eclipse.ecf.core.identity.GUID
ecf.namespace.generic.remoteservice
ecf.namespace.jmdns
org.eclipse.ecf.core.identity.LongID
org.eclipse.ecf.core.identity.UuID
org.eclipse.ecf.core.identity.StringID
ecf.namespace.remoteservice
ecf.namespace.discovery
org.eclipse.ecf.core.identity.URIID

g! lns ecf.namespace.jmdns
ID=ecf.namespace.jmdns
	UriScheme=jmdns
	Class=org.eclipse.ecf.provider.jmdns.identity.JMDNSNamespace
	Description=JMDNS Discovery Namespace
	InstanceArgTypes=(java.lang.String);(java.lang.String,java.lang.String);(org.eclipse.ecf.discovery.identity.IServiceTypeID);(java.lang.String,java.net.URI)

Container Instances

ECF IContainer instances are used to represent specific connections or sessions.

Command: listcontainers, lcs

Parameters: None -- Produces a table of all containers by container ID; Container ID -- Details about that container instance

Example:

g! listcontainers
ID                                           |ImplClass                               |Connected
ecftcp://slewis-lenovo:52954/server          |TCPServerSOContainer                    |ecftcp://slewis-lenovo:52954/server

g! lcs ecftcp://slewis-lenovo:52954/server
ID=ecftcp://slewis-lenovo:52954/server
	Namespace=org.eclipse.ecf.core.identity.StringID
	Class=org.eclipse.ecf.provider.generic.TCPServerSOContainer
	ConnectedTo=ecftcp://slewis-lenovo:52954/server
	ConnectNamespace=org.eclipse.ecf.core.identity.StringID
	Config=ecf.generic.server

Container Type Descriptions

Container Type Descriptions (class org.eclipse.ecf.core.ContainerTypeDescription) are descriptions of containers prior to actual instance creation. In effect, container type descriptions define a factory for creating instances of a given type.

Note that Container Type Descriptions Names correspond the the OSGi notion of distribution provider configuration/config type, and can be used with the OSGi standard remote service property service.exported.configs=. For example: service.exported.configs=ecf.generic.server.

Command: listtypedescriptions, lctds, listconfigs, listcfgs

Parameters: None -- Produces a table of all descriptions/config by config name; Config Name -- Details about that container type config

Example:

g! lctds
ContainerTypeDescription Name
ecf.generic.server
ecf.base
ecf.container.jmdns.locator
ecf.container.jmdns
ecf.generic.ssl.client
ecf.generic.client
ecf.container.jmdns.advertiser
ecf.generic.ssl.server

g! listconfigs ecf.generic.server
ID=ecf.generic.server
	Description=ECF Generic Server
	SupportedConfigs=[ecf.generic.server]
	SupportedIntents=[osgi.basic, osgi.async, osgi.private, passByValue, exactlyOnce, ordered]
	InstanceArgTypes=(org.eclipse.ecf.core.identity.ID);(org.eclipse.ecf.core.identity.ID,java.lang.Integer)
	Adapters=[org.eclipse.ecf.core.sharedobject.ISharedObjectContainerGroupManager, org.eclipse.ecf.core.sharedobject.ISharedObjectContainer, org.eclipse.ecf.provider.comm.IConnectRequestHandler, org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter, org.eclipse.ecf.core.IContainer]
	Hidden=false
	Server=true
g! 

RSA Commands

Exports

List and get details about ECF RSA exported remote services.

Command: listexports, lexps

Parameters: None -- Produces a table of all exported remote services by unique endpoint.id; endpoint.id -- The endpoint description for that exported remote service

Example:

g! listexports
endpoint.id                          |Exporting Container ID                       |Exported Service Id
5cda6f87-44be-4c7f-b8b2-f746a9e187ce |ecftcp://slewis-lenovo:52954/server          |64

g! lexps 5cda6f87-44be-4c7f-b8b2-f746a9e187ce
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:52954/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524510501037"/>
    <property name="ecf.rsvc.id" value-type="Long" value="1"/>
    <property name="endpoint.framework.uuid" value-type="String" value="7884df15-9b29-4bb1-97b6-c5cdef4659d4"/>
    <property name="endpoint.id" value-type="String" value="5cda6f87-44be-4c7f-b8b2-f746a9e187ce"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported" value-type="String" value="true"/>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>

g! 

Imports

List and get details about RSA imported endpoints.

Command: listimports, limps

Parameters: None -- Produces a table of all imported endpoint descriptions by endpoint.id; endpoint.id -- The endpoint description for that imported remote service

Example:

g! listimports
endpoint.id                          |Importing Container ID                       |Imported Service Id
5cda6f87-44be-4c7f-b8b2-f746a9e187ce |b4mR1bqKQbTxqaxfKoTu1TC9Sag=                 |65

g! limps 5cda6f87-44be-4c7f-b8b2-f746a9e187ce
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:52954/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524510501037"/>
    <property name="ecf.rsvc.id" value-type="Long" value="1"/>
    <property name="endpoint.framework.uuid" value-type="String" value="7884df15-9b29-4bb1-97b6-c5cdef4659d4"/>
    <property name="endpoint.id" value-type="String" value="5cda6f87-44be-4c7f-b8b2-f746a9e187ce"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.client</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>

g! 

RSA Export and Unexport

Export

Command: exportservice, expsvc

Parameters:

service.id of the service to export (required)

map of containing service properties of service to export (optional)

Example: For this example, assume that an instance of service org.example.remoteservice.api.ExampleRemoteService has already been registered:

org.example.remoteservice.impl [29] provides:
---------------------------------------------
service; org.example.remoteservice.api.ExampleRemoteService with properties:
   component.id = 3
   component.name = org.example.remoteservice.impl.ExampleRemoteServiceImpl
   service.bundleid = 29
   service.exported.interfaces = *
   service.id = 64
   service.intents = osgi.basic
   service.scope = bundle

The service.id is 64, so the export is:

g! expsvc 64
14:23:53.022;EXPORT_REGISTRATION;exportedSR=[org.example.remoteservice.api.ExampleRemoteService];cID=StringID[ecftcp://slewis-lenovo:52954/server];rsId=2
--Endpoint Description---
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:52954/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524518630314"/>
    <property name="ecf.rsvc.id" value-type="Long" value="2"/>
    <property name="endpoint.framework.uuid" value-type="String" value="7884df15-9b29-4bb1-97b6-c5cdef4659d4"/>
    <property name="endpoint.id" value-type="String" value="d505b55d-ceda-4599-968b-c56b2d90cc7a"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported" value-type="String" value="true"/>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>
---End Endpoint Description
service.id=64 successfully exported with endpoint description:
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:52954/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524518630314"/>
    <property name="ecf.rsvc.id" value-type="Long" value="2"/>
    <property name="endpoint.framework.uuid" value-type="String" value="7884df15-9b29-4bb1-97b6-c5cdef4659d4"/>
    <property name="endpoint.id" value-type="String" value="d505b55d-ceda-4599-968b-c56b2d90cc7a"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported" value-type="String" value="true"/>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>

The same endpoint description is presented twice as the result of the export, because the RSA debug is on. If off, then the endpoint description will be presented only once after the line:

service.id=64 successfully exported with endpoint description:

The command:

exportservice <service.id>

will set the remote service property service.exported.interfaces should be set to *, and the remote service property service.exported.configs will be set to ecf.generic.server. It's also possible, however, to provide a map of remote service properties as a second parameter to the exportservice command.

For example:

# create the overridingProperties map as a gogo shell variable with the desired properties and values
g! overridingProperties = [ service.exported.interfaces="*" service.exported.configs="ecf.generic.server" ]
service.exported.interfaces*
service.exported.configsecf.generic.server

# then with service.id=64 and the map value of $overridingProperties
g! exportservice 64 $overridingProperties
service.id=64 successfully exported with endpoint description:
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:52954/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524519728522"/>
    <property name="ecf.rsvc.id" value-type="Long" value="3"/>
    <property name="endpoint.framework.uuid" value-type="String" value="7884df15-9b29-4bb1-97b6-c5cdef4659d4"/>
    <property name="endpoint.id" value-type="String" value="35608635-6ddc-4da8-b7bc-6c6512d2f8b7"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported" value-type="String" value="true"/>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>

Another example:

g! expsvc 64 [ service.exported.interfaces="*" service.exported.configs="ecf.generic.server" foo="bar" ]

14:50:05.812;EXPORT_REGISTRATION;exportedSR=[org.example.remoteservice.api.ExampleRemoteService];cID=StringID[ecftcp://slewis-lenovo:63443/server];rsId=2
--Endpoint Description---
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:63443/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524520205812"/>
    <property name="ecf.rsvc.id" value-type="Long" value="2"/>
    <property name="endpoint.framework.uuid" value-type="String" value="0f6b1484-80da-43af-8876-681b5e8baddc"/>
    <property name="endpoint.id" value-type="String" value="f48abe72-0e53-462f-be1f-1ddfe9bae201"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="foo" value-type="String" value="bar"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported" value-type="String" value="true"/>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>
---End Endpoint Description
service.id=64 successfully exported with endpoint description:
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:63443/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524520205812"/>
    <property name="ecf.rsvc.id" value-type="Long" value="2"/>
    <property name="endpoint.framework.uuid" value-type="String" value="0f6b1484-80da-43af-8876-681b5e8baddc"/>
    <property name="endpoint.id" value-type="String" value="f48abe72-0e53-462f-be1f-1ddfe9bae201"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="foo" value-type="String" value="bar"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported" value-type="String" value="true"/>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>

Unexport

Command: unexportservice, unexpsvc

Parameters:

endpoint.id of the endpoint to unexport (required)

Example:

g! lexps
endpoint.id                          |Exporting Container ID                       |Exported Service Id
d505b55d-ceda-4599-968b-c56b2d90cc7a |ecftcp://slewis-lenovo:52954/server          |64

g! unexportservice d505b55d-ceda-4599-968b-c56b2d90cc7a
d505b55d-ceda-4599-968b-c56b2d90cc7a unexported

g! lexps
endpoint.id                          |Exporting Container ID                       |Exported Service Id

g! 

Import

Command: importservice, impsvc

Options:

-edefurl <url> of the endpoint edef file

If the -edefurl option is not given, the edef input will be assume to be provided via standard input (i.e. via copy and paste).

Example: For this example, assume that in a separate (impl) console a remote service has been exported, and has produced the endpoint description. The user selects and copies to the clipboard the following from the impl console:

<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:50240/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524536590668"/>
    <property name="ecf.rsvc.id" value-type="Long" value="2"/>
    <property name="endpoint.framework.uuid" value-type="String" value="669704c8-c9b8-4c47-84a0-71ca0a4de097"/>
    <property name="endpoint.id" value-type="String" value="577226a2-d0ab-4a44-8d35-71d79a50fe13"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported" value-type="String" value="true"/>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>

Then, moving to the consumer console, this endpoint can be imported via the console by

g! importservice 
Waiting for console input.   To complete enter an empty line...
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:50240/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524536590668"/>
    <property name="ecf.rsvc.id" value-type="Long" value="2"/>
    <property name="endpoint.framework.uuid" value-type="String" value="669704c8-c9b8-4c47-84a0-71ca0a4de097"/>
    <property name="endpoint.id" value-type="String" value="577226a2-d0ab-4a44-8d35-71d79a50fe13"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported" value-type="String" value="true"/>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>

service responds=Hello ExampleRemoteServiceConsumer
19:25:55.874;IMPORT_REGISTRATION;importedSR=[org.example.remoteservice.api.ExampleRemoteService];cID=StringID[ecftcp://slewis-lenovo:50240/server];rsId=2
--Endpoint Description---
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:50240/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524536590668"/>
    <property name="ecf.rsvc.id" value-type="Long" value="2"/>
    <property name="endpoint.framework.uuid" value-type="String" value="669704c8-c9b8-4c47-84a0-71ca0a4de097"/>
    <property name="endpoint.id" value-type="String" value="577226a2-d0ab-4a44-8d35-71d79a50fe13"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.client</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>
---End Endpoint Description
endpoint.id=577226a2-d0ab-4a44-8d35-71d79a50fe13 with service.id=67 successfully imported:
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://slewis-lenovo:50240/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1524536590668"/>
    <property name="ecf.rsvc.id" value-type="Long" value="2"/>
    <property name="endpoint.framework.uuid" value-type="String" value="669704c8-c9b8-4c47-84a0-71ca0a4de097"/>
    <property name="endpoint.id" value-type="String" value="577226a2-d0ab-4a44-8d35-71d79a50fe13"/>
    <property name="endpoint.package.version.org.example.remoteservice.api" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="64"/>
    <property name="objectClass" value-type="String">
      <array>
        <value>org.example.remoteservice.api.ExampleRemoteService</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>osgi.basic</value>
        <value>osgi.async</value>
        <value>osgi.private</value>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.client</value>
      </array>
    </property>
    <property name="service.intents" value-type="String" value="osgi.basic"/>
  </endpoint-description>
</endpoint-descriptions>

Unimport

Command: unimportservice, unimpsvc

Parameters:

endpoint.id of the service to unimport (required)

Example:

g! limps
endpoint.id                          |Importing Container ID                       |Imported Service Id
577226a2-d0ab-4a44-8d35-71d79a50fe13 |KuyWDgDnTMlrQSpRzzw0HFKxjFY=                 |67

g! unimpsvc 577226a2-d0ab-4a44-8d35-71d79a50fe13
19:30:13.591;IMPORT_UNREGISTRATION;importedSR=null;cID=StringID[ecftcp://slewis-lenovo:50240/server];rsId=0
577226a2-d0ab-4a44-8d35-71d79a50fe13 unimported
g! limps
endpoint.id                          |Importing Container ID                       |Imported Service Id

Back to the top