A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Fevereiro de 2014 SDK Openbus - Java.

Apresentações semelhantes


Apresentação em tema: "GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Fevereiro de 2014 SDK Openbus - Java."— Transcrição da apresentação:

1 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Fevereiro de 2014 SDK Openbus - Java

2 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Passo 1: Obtendo o SDK Openbus A última versão do SDK Java do Openbus pode ser obtida em: http://www.tecgraf.puc-rio.br/openbus Precisaremos também do JDK 1.6 ou superior

3 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Libs do SDK Openbus 2.0.0.2 Openbus: openbus-sdk-core-2.0.0.2.jar openbus-sdk-legacy-2.0.0.2.jar Jacorb: jacorb-3.3.jar slf4j-api-1.6.4.jar slf4j-jdk14-1.6.4.jar SCS: scs-core-1.2.1.2.jar

4 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Passo 2: Preparando os stubs e skeletons Usaremos como base a mesma IDL do exemplo StockMarket mostrado no exercício do SCS Compilar a IDL Compilar o código Java das classes geradas pelo compilador IDL e das classes que implementam as facetas descritas na IDL

5 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Passo 3: Implementando as facetas do componente O componente StockSeller possui duas facetas: StockServer StockExchange As classes StockServerImpl e StockExchangeImpl implementam, respectivamente, cada uma dessas facetas Opcionalmente, para compartilhar o estado entre as duas facetas, teremos implementada a classe StockSellerContext de contexto do componente

6 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Passo 4: Implementando um Servidor Um programa servidor se encarrega de: – realizar a conexão por certificado – criar o componente que implementa as facetas necessárias – registrar uma oferta de serviço – instalar um ShutdownHook para desconectar do barramento antes de finalizar a aplicação – manter ativa a execução do ORB

7 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Fluxo principal do servidor public static void main(String[] args) throws IOException, InvalidName, AdapterInactive, SCSException { // Lê arquivo de propriedades Properties props = loadProperties(); // Cria um assistente do OpenBus final Assistant assistant = connectWithOpenBus(props); final ORB orb = assistant.orb(); POA poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); poa.the_POAManager().activate(); // Dispara uma thread para garantir o recebimento de chamadas pelo ORB Thread run = new Thread() { @Override public void run() { orb.run(); } }; run.start(); // Adiciona uma thread a ser executada em caso de término do processo. Essa thread faz a desconexão com o // barramento. Thread shutdown = new Thread() { @Override public void run() { assistant.shutdown(); orb.shutdown(true); orb.destroy(); } }; Runtime.getRuntime().addShutdownHook(shutdown); // Cria componente IComponent component = createComponent(orb, poa); // Registra o serviço no barramento ServiceProperty[] serviceProperties = new ServiceProperty[] { new ServiceProperty(“my property", “ ") }; assistant.registerService(component, serviceProperties); }

8 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Fazer a conexão por certificado private static Assistant connectWithOpenBus(Properties props) { String host = props.getProperty("host.name"); int port = Integer.parseInt(props.getProperty("host.port")); String entity = props.getProperty("seller.name"); String privateKeyFile = props.getProperty("seller.key"); PrivateKey privateKey = null; try { privateKey = OpenBusPrivateKey. createPrivateKeyFromFile(privateKeyFile); } catch (Exception e) { System.out.println("O caminho da chave privada deve apontar para uma chave válida."); e.printStackTrace(); System.exit(1); } …

9 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Fazer a conexão por certificado … AssistantParams params = new AssistantParams(); params.callback = new OnFailureCallback() { @Override public void onStartSharedAuthFailure(Assistant arg0, Throwable arg1) { System.out.println("Erro na tentativa de login por autenticação compartilhada: " + arg1); } @Override public void onRegisterFailure(Assistant arg0, IComponent arg1, ServiceProperty[] arg2, Throwable arg3) { System.out.println("Erro na tentativa de registro de oferta: " + arg3); } @Override public void onLoginFailure(Assistant arg0, Throwable arg1) { System.out.println("Erro na tentativa de login: " + arg1); } @Override public void onFindFailure(Assistant arg0, Throwable arg1) { System.out.println("Erro na tentativa de busca: " + arg1); } }; return Assistant.createWithPrivateKey(host, port, entity, privateKey, params); }

10 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Registrar a oferta de serviço ServiceProperty[] serviceProperties = new ServiceProperty[] { new ServiceProperty("offer.domain", “StockMarket") }; assistant.registerService(component, serviceProperties);

11 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Instalar o ShutdownHook Thread shutdown = new Thread() { @Override public void run() { assistant.shutdown(); orb.shutdown(true); orb.destroy(); } }; Runtime.getRuntime().addShutdownHook(shutdown);

12 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Iniciar thread para manter a execução do ORB Thread run = new Thread() { @Override public void run() { orb.run(); } }; run.start();

13 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Passo 5: Implementando o Cliente O programa cliente se encarrega de: – Conectar com o Openbus através de usuário e senha – Buscar pelo(s) serviço(s) que procura – Utilizar o(s) serviço(s)

14 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Conectando com usuário e senha AssistantParams params = new AssistantParams(); params.callback = new OnFailureCallback() { @Override public void onStartSharedAuthFailure(Assistant arg0, Throwable arg1) { System.out.println("Erro na tentativa de login por autenticação compartilhada: " + arg1); } @Override public void onRegisterFailure(Assistant arg0, IComponent arg1, ServiceProperty[] arg2, Throwable arg3) { System.out.println("Erro na tentativa de registro de oferta: " + arg3); } @Override public void onLoginFailure(Assistant arg0, Throwable arg1) { System.out.println("Erro na tentativa de login: " + arg1); } @Override public void onFindFailure(Assistant arg0, Throwable arg1) { System.out.println("Erro na tentativa de busca: " + arg1); } }; final Assistant assistant = Assistant.createWithPassword(host, port, login, password.getBytes(), params);

15 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Procurando pelas facetas private static IComponent findStockSeller(Assistant assistant, String offerEntity) { // busca por serviço ServiceProperty[] properties = new ServiceProperty[3]; properties[0] = new ServiceProperty("openbus.offer.entity", offerEntity); properties[1] = new ServiceProperty( "openbus.component.interface", StockServerHelper.id()); properties[2] = new ServiceProperty( "openbus.component.interface", StockExchangeHelper.id()); ServiceOfferDesc[] services = new ServiceOfferDesc[0]; try { services = assistant.findServices(properties, -1); } catch (ServiceFailure e) {…} catch (TRANSIENT e) {…} catch (COMM_FAILURE e) {…} catch (NO_PERMISSION e) { if (e.minor == NoLoginCode.value) {…} catch (Throwable e) {…} // analiza as ofertas encontradas for (ServiceOfferDesc offerDesc : services) { try { if (offerDesc.service_ref._non_existent()) { System.out.println(“Um serviço encontrado encontra-se indisponível."); continue; } catch (Exception e) { continue; } return offerDesc.service_ref; } System.out.println("Nenhuma oferta válida foi encontrada."); System.exit(1); }


Carregar ppt "GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Fevereiro de 2014 SDK Openbus - Java."

Apresentações semelhantes


Anúncios Google