Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Converta Parâmetros de Imagem da Nuvem IBM para Java Usando o JAXB

JAXB e Plain Old Java Objects transformam os parâmetros XML de imagem de nuvem em código Java utilizável

Dominique Vernier, IT Architect, IBM
Dominique Vernier photo
Nos últimos anos, Dominique Vernier se concentrou em tecnologias Java e arquitetura de nuvem. Ele também trabalha em tecnologia da informação há algum tempo, tendo obtido conhecimento amplo em tecnologias e produtos como sistema de mensagens, banco de dados, SOA, EAI, cliente/servidor, C/C++ e estruturas existentes. Dominique também possui extenso conhecimento de áreas do setor como telecomunicações, CRM, logística e seguros. Ele é o autor/coautor de quatro patentes relacionadas a motores de estado e gerenciamento de recursos. Atualmente, Dominique é responsável por Desenvolvimento e Teste de Negócios Inteligentes em soluções da Nuvem IBM na Equipe Global IBM GTS.

Resumo:  Os parâmetros de imagem de uma ® imagem de nuvem IBM podem ser recuperados por meio de uma URL chamada manifesto, fornecida pela descrição da imagem. A URL retorna uma resposta XML. Neste artigo, o autor explica como transformar essa resposta XML em uma resposta utilizável por Java™ criando Plain Old Java Objects (POJOs) e chamando o método unmarshal — do JAXB — depois que você obtém essa resposta, fica fácil enviar solicitações para criar novas instâncias com base nas imagens que solicitam parâmetros a partir de classes Java.

Data:  20/Jul/2011
Nível:  Intermediário Também disponível em :   Inglês
Atividade:  1328 visualizações
Comentários:  


Os parâmetros da nuvem IBM® são passados de uma imagem para uma instância usando um arquivo XML chamado parameters.xml. Esse arquivo está localizado no conteúdo de RAM referente à imagem e, em seguida, é copiado sob o diretório /etc/cloud (para o Linux®) na sua instância com os parâmetros reais.

Defina parâmetros customizados para criar a sua instância no arquivo parameters.xml. Por exemplo: é possível ter uma imagem customizada que configura Virtual Network Computing (VNC) no tempo de criação da instância. A imagem solicita os parâmetros ID do usuário, senha e senha de VNC (veja a Figura 1).


Figura 1. Definindo parâmetros para criar a sua instância

Se, por exemplo, você quer criar um programa Java™ que extrai os parâmetros do arquivo XML da imagem ou da instância, é necessário ler esse arquivo de parâmetro a partir do programa Java. Por exemplo: se você quer criar o seu próprio portal que fornece a capacidade de solicitar instâncias a partir de imagens. É necessário saber quais parâmetros a imagem solicita para desenvolver dinamicamente a sua solicitação de tela. Além disso, é preciso obter essas informações dinamicamente, e não como um resultado estático; ao fazer isso, você evita criar telas específicas a partir de cada tipo de imagem e, em seguida, postar os valores no arquivo de parâmetro novamente.

É possível recuperar o parameters.xml usando a API IBM Cloud Java e o método Image.getManifest() . Este artigo fornece um conjunto de APIs que oferece todos os métodos necessários para acessar o parameters.xml. Existem diversos métodos para analisar arquivos XML, mas, neste artigo, o exemplo usa o JAXB, que permite serializar e desserializar arquivos XML.

Primeiramente, alguns conceitos

O JAXB pode criar um pacote Java com base em um arquivo XSD. Localize o arquivo parameters.xsd no documento "Creating and customizing images" (consulte Recursos).

A partir desse arquivo XSD, use a ferramenta xjc fornecida pelo Java para gerar o pacote Java que conterá as classes que representam o modelo de parâmetro e uma classe factory. Essas classes geradas são usadas para acessar o parameters.xml.

Esse é o conceito do qual você precisa. Vamos criar o pacote Java.


Crie o pacote Java

Conforme o que mencionamos anteriormente, use a ferramenta xjc fornecida pelo Java, mas primeiro você precisa do arquivo parameters.xsd. Neste momento, a melhor forma de criar o arquivo parameters.xsd é copiá-lo e colá-lo a partir do documento "Creating and customizing images" disponível na guia Support da nuvem IBM (consulte Recursos).

Depois de obter o arquivo parameters.xsd, basta inserir o comando a seguir para gerar o seu pacote:

xjc -p <packageName> parameters.xsd

É criado um pacote no seu diretório atual, semelhante a este:

C:\Documents and Settings\Dominique\workspaceCloud\com.ibm.cloud.parameters\src>xjc 
   -p com.ibm.cloud.parameters ../resource/parameters.xsd
parsing a schema...
compiling a schema...
com\ibm\cloud\parameters\DataType.java
com\ibm\cloud\parameters\Field.java
com\ibm\cloud\parameters\ObjectFactory.java
com\ibm\cloud\parameters\OptionType.java
com\ibm\cloud\parameters\Options.java
com\ibm\cloud\parameters\Parameters.java
com\ibm\cloud\parameters\Values.java

Importe esse pacote para o seu projeto Java (Figura 2):


Figura 2. Importe o pacote de parâmetros para o projeto Java

Neste pacote, é possível ver Plain Old Java Objects (POJOs) que representam cada objeto definido no arquivo XSD e uma classe factory.


Testando o pacote de parâmetros

Execute um pequeno programa para testar o seu pacote de parâmetros Java:

String cloudPasswordFile = args[0];
cloudUserId = args[1];
String cloudPassPhrase = args[2];

// Retrieve cloud access information.
cloudPassword = PasswordFileProcessor.getRealPassword(
        cloudPassPhrase, cloudPasswordFile, cloudUserId);
Properties props = new Properties();
props.load(new FileInputStream("cloud.properties"));
address = props.getProperty("address",
        "https://www-147.ibm.com/cloud/enterprise/");

// Set Credential and address.
client.setRemoteCredentials(cloudUserId, cloudPassword);
client.setEndpointAddress(address);

//Search for an image description
Image image = client.describeImage("20004761");

Security.setProperty("ssl.SocketFactory.provider", 
  "com.ibm.jsse2.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", 
  "com.ibm.jsse2.SSLServerSocketFactoryImpl");

//Create an http client
HttpClient httpclient = new HttpClient();
Credentials defaultcreds = 
   new UsernamePasswordCredentials(cloudUserId, cloudPassword);
httpclient.getState().setCredentials(AuthScope.ANY, defaultcreds);

//Create the method, it is important to use the escape 
//because the url contains '{' and '}'.
GetMethod httpget = new GetMethod(new HttpsURL(image.getManifest()).getEscapedURI());

//Execute the request
httpclient.executeMethod(httpget);

//Get the result
String result = httpget.getResponseBodyAsString();

//Prepare JAXB
JAXBContext jc;
jc = JAXBContext.newInstance("com.ibm.cloud.parameters");
Unmarshaller u = jc.createUnmarshaller();

//Unmarshal the result
Parameters parameters = (Parameters) u.unmarshal(new StringReader(result));

//Display the parameters
for (Field field : parameters.getField()) {
     System.out.println("Field Name=" + field.getName());
}

No exemplo, usamos uma imagem customizada com imageID=20004761. Pode-se localizar o ID da imagem buscando no Asset Catalog. (Control Panel > View Asset Catalog. Ao selecionar uma imagem a partir de My Dashboard ou de Assets, o ID é especificado no campo de ID de imagem.)

Esse arquivo parameters.xml se parece com:

<parameters xsi:noNamespaceSchemaLocation=
  "platform:/resource/com.ibm.ccl.devcloud.client/schema/parameters.xsd">
  <field name="userID" label="User ID" type="string"/>
  <field name="userPassword" label="User Password" type="password" 
               pattern="^\w*(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])\w*$" 
               patternErrorMessage="Invalid Password. Must contain at least 1 number,
               at least 1 lower case letter, and at least 1 upper case letter.">
	</field>
	<field name="vncPassword" label="VNC Password" type="password"
        pattern="^\w*(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])\w*$"
        patternErrorMessage="Invalid Password. Must contain at least 1 number,
               at least 1 lower case letter, and at least 1 upper case letter.">
  </field>
</parameters>

E os resultados são:

Field Name=userID
Field Name=userPassword
Field Name=vncPassword


Conclusão

Há várias técnicas de conversão de XML para modelos Java usando tecnologias como XMLBeans e XStreams, mas o JAXB é um dos meios mais simples. Espero que este artigo o estimule a usar a API Java IBM Cloud para preencher os seus requisitos relacionados à nuvem IBM e, talvez, a desenvolver o seu próprio método para criar instâncias.


Recursos

Aprender

Obter produtos e tecnologias

Discutir

Sobre o autor

Dominique Vernier photo

Nos últimos anos, Dominique Vernier se concentrou em tecnologias Java e arquitetura de nuvem. Ele também trabalha em tecnologia da informação há algum tempo, tendo obtido conhecimento amplo em tecnologias e produtos como sistema de mensagens, banco de dados, SOA, EAI, cliente/servidor, C/C++ e estruturas existentes. Dominique também possui extenso conhecimento de áreas do setor como telecomunicações, CRM, logística e seguros. Ele é o autor/coautor de quatro patentes relacionadas a motores de estado e gerenciamento de recursos. Atualmente, Dominique é responsável por Desenvolvimento e Teste de Negócios Inteligentes em soluções da Nuvem IBM na Equipe Global IBM GTS.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Tecnologia Java, Cloud computing
ArticleID=657646
ArticleTitle=Converta Parâmetros de Imagem da Nuvem IBM para Java Usando o JAXB
publish-date=07202011
author1-email=dominique_vernier@be.ibm.com
author1-email-cc=

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).