WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Tipos de Dados IDL

Ao usar o domínio DataObject com CORBA, é necessário saber como o esquema XML e os tipos de ESQL correspondem aos tipos no arquivo IDL.

Tipos de IDL Primitivos

A tabela a seguir mostra o mapeamento entre tipos de IDL, tipos simples de esquema XML e tipos de ESQL.
IDL Esquema XML ESQL
Booleano xsd:boolean BOOLEAN
char

<xsd:simpleType name="char">
<xsd:restriction base="xsd:string">
<xsd:length value="1" fixed="true/>
</xsd:restriction>
</simpleType>

CHARACTER
wchar

<xsd:simpleType name= “wchar”>
<xsd:restriction base=”xsd:string”/>
</xsd:simpleType>

CHARACTER
double xsd:double FLOAT
float xsd:float FLOAT
octet xsd:unsignedByte INTEGER
long xsd:int INTEGER
Long long xsd:long INTEGER
short xsd:short INTEGER
cadeia xsd:string CHARACTER
wstring xsd:string CHARACTER
Unsigned short xsd:unsignedShort INTEGER
Unsigned long xsd:unsignedInt INTEGER
Unsigned long long xsd:unsignedLong DECIMAL

Tipos de IDL Complexos

WebSphere Message Broker suporta os seguintes tipos de IDL complexos:
  • Enums
  • Typedefs
  • Sequências
  • Estruturas
Cada tipo complexo é suportado nos seguintes locais:
  • Tipos de retorno para operações
  • Parâmetros In
  • Parâmetros Inout
  • Parâmetros Out
  • Exceções Inside
  • Estruturas Inside
  • Sequências Inside
  • Typedefs Inside
Os exemplos a seguir mostram o mapeamento entre tipos de IDL, esquema XML e XML.
Enums
Enums IDL são mapeados para enumerações no esquema XML. Enums dentro da árvore são do tipo cadeia.
A seguir há um exemplo de arquivo IDL:
enum myEnum {A, B, C};
interface example {
	void myoperation(in myEnum input1);
};
A seguir há um esquema XML de exemplo:
<xsd:simpleType name=”myEnum”>
	<xsd:restriction base=”xsd:string”> 
		<xsd:enumeration value=”A”/> 
		<xsd:enumeration value=”B”/>
		<xsd:enumeration value=”C”/>
	</xsd:restriction> 
</xsd:simpleType>
A seguir há um XML de exemplo:
<example.myoperation>
	<input1>A</input1>
</example.myoperation>
Sequências e typedefs
Typedefs IDL são mapeados para restrições de tipo de esquema XML. Sequências de IDL são mapeadas para tipos complexos de sequência de esquema XML. As sequências podem ser usadas apenas nos typedefs.
A seguir há um exemplo de arquivo IDL:
Typedef long myLong; 
typedef sequence<long> longSeq; 
interface example { 	
	void myoperation(in longSeq input1, inout myLong input2); 
};  
A seguir há um esquema XML de exemplo:
<xsd:complexType name="longSeq"> 
	<xsd:sequence> 
		<xsd:element name="item" minOccurs="0" maxOccurs="unbounded" type="xsd:int"/>
	</xsd:sequence>
</xsd.complexType>
Uma sequência pode ser limitada com a sintaxe sequence<long, 10>, que coloca um limite no arquivo XSD.
A seguir há um XML de exemplo:
<example.myoperation>
	<input1>
		<item>10</item>
		<item>11</item>
		<item>12</item>
	</input1>
</example.myoperation>
Estruturas
As estruturas IDL são mapeadas para definições complexType de esquema XML.
A seguir há um exemplo de arquivo IDL:
struct myStruct { 
	char c; 
	string str;
	octet o; 
	short s; 
	unsigned long long ull; 
	float f; 
	double d; 
};
interface example {
	void myoperation(in myStruct input1);
};
A seguir há um esquema XML de exemplo:
<xsd:complexType name="myStruct">
	<xsd:sequence>
		<xsd:element name="c" type="xsd:string" maxOccurs="1" minOccurs="1"/> 
		<xsd:element name="str" type="xsd:string" nillable="true" maxOccurs="1" minOccurs="1"/>
		<xsd:element name="o" type="xsd:byte" maxOccurs="1" minOccurs="1"/> 
		<xsd:element name="s" type="xsd:short" maxOccurs="1" minOccurs="1"/> 
		<xsd:element name="ull" type="xsd:unsignedLong" maxOccurs="1" minOccurs="1"/>
		<xsd:element name="f" type="xsd:float" maxOccurs="1" minOccurs="1"/>
		<xsd:element name="d" type="xsd:double" maxOccurs="1" minOccurs="1"/> 
	</xsd:sequence>
</xsd:complexType>
A seguir há um XML de exemplo:
<example.myoperation>
	<input1>
		<c>c</c>
		<str>hello</str>
		<o>12</o>
		<s>10</s>
		<ull>110</ull>
		<f>12.0</f>
		<d>12.1</d>
	</input1>
</example.myoperation>

Módulos

Em CORBA, os módulos fornecem o escopo. Se uma interface estiver contida em um módulo no arquivo IDL, o nome da interface é qualificado com o nome do módulo no formato a seguir:

ModuleName.InterfaceName.OperationName

O exemplo a seguir mostra um módulo em um arquivo IDL.
Module one {
	Interface OneAInterface {
	};
};
O nome completo da interface chamada OneAInterface é one.OneAInterface. Em um arquivo IDL, os módulos podem ser aninhados em outros módulos. Nesse caso, o nome completo da interface pode incluir mais de um nome de módulo, iniciando a partir do módulo raiz, como:

ModuleNameA.ModuleNameB.InterfaceName.OperationName

Um arquivo IDL pode conter mais de uma operação com o mesmo nome desde que as operações estejam em módulos diferentes.
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:30:50


Tópico de ConceitoTópico de Conceito | Versão 8.0.0.5 | bc22410_