2012-08-07 14 views

Respuesta

10

Depende si se refiere de forma interactiva, utilizando un shell OSGi o programáticamente desde su aplicación.

interactiva

Puede utilizar el Equinox console. Ver 'servicios'. Para ver solo los servicios que ha implementado, necesita usar un filtro LDAP. He aquí un ejemplo:

(objectClass=my.package.name.*) 

Véase también la respuesta de @Neil de Bartlett, que podría ser más fácil ya que sólo se puede limitar por ID de paquete (suponiendo que lo sepa, pero eso es fácil de encontrar).

Programatically

utilizar el enfoque ServiceTracker. Neil also wrote all about this, así que asegúrese de darle sus upvotes también :)

+0

parece mostrar los servicios de eclipse osgi en ejecución. Me gustaría ver los servicios de mi aplicación osgi que implementé. ¿Hay alguna forma de hacer esto? – user840930

+0

De nuevo, necesita usar un filtro para reducirlos. Además, en algunas consolas (no estoy seguro acerca de la consola Equinox) puede filtrar por paquete fuente ... El segundo ejemplo de código de Neil es un ejemplo de esto. –

11

A partir del tipo cáscara gogo:

inspect cap service 

que mostrará todos los servicios registrados por todos los paquetes. Si desea mostrar servicios para un paquete específico a continuación, escriba:

inspect cap service <id> 

Dónde <id> es el ID de grupo numérico del paquete está interesado en

1

Por el momento, y quiero decir, con mucho, el mejor. forma de ver sus servicios y miles de detalles más está utilizando Apache Felix Webconsole y luego instalar XRay. Es posible que desee leer mi first y second blog sobre este paquete.

0

Si usted está buscando para simplemente detener un servicio específico que ya está registrado, pero no se ha iniciado y le gustaría empezar de forma dinámica, se puede obtener el paquete usando:

Bundle bundle = Platform.getBundle("com.example.com.class"); 

// A continuación, iniciar el haz

bundle.start(); 

// Compruebe si los servicios Referencias

ServiceReference<IExampleService> serviceReference = b.getBundleContext().getServiceReference(IExampleService.class); 
0

Según los [documentos API] [1] pueden llamar al método getContext().getAllServiceReferences(clazz, filter) para obtener una lista de todos los servicios que se registraron bajo la clase especificada y que coinciden con la expresión de filtro especificada. Pasando null en ambos parámetros obtendrá todos los servicios.

Cuestiones relacionadas