Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAmália Santana Guterres Alterado mais de 5 anos atrás
1
SDK Openbus - Java Tecgraf PUC-Rio Setembro de 2013
2
Passo 1: Obtendo o SDK Openbus
A última versão do SDK Java do Openbus pode ser obtida em: Precisaremos também do JDK 1.6 ou superior
3
Libs do SDK Openbus 2.0.0.0 Openbus: Jacorb: SCS: ANT:
openbus-sdk-core jar openbus-sdk-legacy jar openbus-sdk-demo-util jar Jacorb: jacorb-3.1.jar slf4j-api jar slf4j-jdk jar SCS: scs-core jar ANT: ant jar ant-launcher jar
4
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
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
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 iniciar a execução do ORB
7
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() { 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", “<value>") }; assistant.registerService(component, serviceProperties);
8
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); return Assistant.createWithPrivateKey(host, port, entity, privateKey);
9
Registrar a oferta de serviço
ServiceProperty[] serviceProperties = new ServiceProperty[] { new ServiceProperty("offer.domain", "Demo Hello") }; assistant.registerService(component, serviceProperties);
10
Instalar o ShutdownHook
Thread shutdown = new Thread() { @Override public void run() { assistant.shutdown(); orb.shutdown(true); orb.destroy(); } }; Runtime.getRuntime().addShutdownHook(shutdown);
11
Iniciar a execução do ORB
Thread run = new Thread() { @Override public void run() { orb.run(); } }; run.start();
12
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)
13
Conectando com usuário e senha
final Assistant assistant = Assistant.createWithPassword(host, port, login, password.getBytes());
14
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) { if (offerDesc.service_ref._non_existent()) { System.out.println(“Um serviço encontrado encontra-se indisponível."); continue; return offerDesc.service_ref; System.out.println("Nenhuma oferta válida foi encontrada."); System.exit(1);
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.