5-4 Getting Started With JAX-WS Web Services for Oracle WebLogic Server
xsd:complexType or JavaBeans. The WebLogic Web services Ant tasks, such as
jwsc and clientgen, automatically generate the data binding artifacts needed to
convert the user-defined data types between their XML and Java representations. The XML representation is used in the SOAP request and response messages, and the Java
representation is used in the JWS that implements the Web service.
The following sections describe the built-in and user-defined data types that are supported by JAXB:
■
Section 5.3.1, Supported Built-In Data Types
■
Section 5.3.2, Supported User-Defined Data Types
5.3.1 Supported Built-In Data Types
The following sections describe the built-in data types supported by WebLogic Web services and the mapping between their XML and Java representations. As long as the
data types of the parameters and return values of the back-end components that implement your Web service are in the set of built-in data types, WebLogic Server
automatically converts the data between XML and Java.
When using user-defined data types, then you must create the data binding artifacts that convert the data between XML and Java. WebLogic Server includes the jwsc and
wsdlc Ant tasks that can automatically generate the data binding artifacts for most
user-defined data types. See Section 5.3.2, Supported User-Defined Data Types
for a list of supported XML and Java data types.
5.3.1.1 XML-to-Java Mapping for Built-in Data Types
The following table lists alphabetically the supported XML Schema data types target namespace http:www.w3.org2001XMLSchema and their corresponding Java
data types. For a list of the supported user-defined XML data types, see Section 5.3.1.2,
Java-to-XML Mapping for Built-In Data Types.
Table 5–1 Mapping XML Schema Built-in Data Types to Java Data Types
XML Schema Data Type Java Data Type lower case indicates a primitive data
type anySimpleType
for xsd:element of this type
java.lang.Object anySimpleType
for xsd:attribute of this type
java.lang.String base64Binary
byte[] boolean
boolean byte
byte date
java.xml.datatype.XMLGregorianCalendar dateTime
javax.xml.datatype.XMLGregorianCalendar decimal
java.math.BigDecimal double
double duration
javax.xml.datatype.Duration float
float g
java.xml.datatype.XMLGregorianCalendar hexBinary
byte[]
Using JAXB Data Binding 5-5
The following example, borrowed from the JAXB specification, shows an example of the default XML-to-Java binding.
5.3.1.1.1 XML Schema xsd:schema xmlns:xsd=http:www.w3.org2001XMLSchema
xsd:element name=purchaseOrder type=PurchaseOrderType xsd:element name=comment type=xsd:string
xsd:complexType name=PurchaseOrderType xsd:sequence
xsd:element name=shipTo type=USAddress xsd:element name=billTo type=USAddress
xsd:element ref=comment minOccurs=0 xsd:element name=items type=Items
xsd:sequence xsd:attribute name=orderDate type=xsd:date
xsd:complexType xsd:complexType name=USAddress
xsd:sequence xsd:element name=name type=xsd:string
xsd:element name=street type=xsd:string xsd:element name=city type=xsd:string
xsd:element name=state type=xsd:string xsd:element name=zip type=xsd:decimal
xsd:sequence xsd:attribute name=country type=xsd:NMTOKEN fixed=US
xsd:complexType xsd:complexType name=Items
xsd:sequence xsd:element name=item minOccurs=1 maxOccurs=unbounded
xsd:complexType xsd:sequence
xsd:element name=productName type=xsd:string xsd:element name=quantity
xsd:simpleType xsd:restriction base=xsd:positiveInteger
xsd:maxExclusive value=100 xsd:restriction
xsd:simpleType xsd:element
int int
integer java.math.BigInteger
long long
NOTATION javax.xml.namespace.QName
Qname javax.xml.namespace.QName
short short
string java.lang.String
time java.xml.datatype.XMLGregorianCalendar
unsignedByte short
unsignedInt long
unsignedShort int
Table 5–1 Cont. Mapping XML Schema Built-in Data Types to Java Data Types
XML Schema Data Type Java Data Type lower case indicates a primitive data
type
5-6 Getting Started With JAX-WS Web Services for Oracle WebLogic Server
xsd:element name=USPrice type=xsd:decimal xsd:element ref=comment minOccurs=0
xsd:element name=shipDate type=xsd:date minOccurs=0
xsd:sequence xsd:attribute name=partNum type=SKU use=required
xsd:complexType xsd:element
xsd:sequence xsd:complexType
-- Stock Keeping Unit, a code for identifying products -- xsd:simpleType name=SKU
xsd:restriction base=xsd:string xsd:pattern value=\d{3}-[A-Z]{2}
xsd:restriction xsd:simpleType
xsd:schema
5.3.1.1.2 Default Java Binding import javax.xml.datatype.XMLGregorianCalendar; import
java.util.List; public class PurchaseOrderType {
USAddress getShipTo{...} void setShipToUSAddress{...}
USAddress getBillTo{...} void setBillToUSAddress{...}
Optional to set Comment property. String getComment{...}
void setCommentString{...} Items getItems{...}
void setItemsItems{...} XMLGregorianCalendar getOrderDate
void setOrderDateXMLGregorianCalendar };
public class USAddress { String getName{...}
void setNameString{...} String getStreet{...}
void setStreetString{...} String getCity{...}
void setCityString{...} String getState{...}
void setStateString{...} int getZip{...}
void setZipint{...} static final String COUNTRY=USA;
}; public class Items {
public class ItemType { String getProductName{...}
void setProductNameString{...} Type constraint on Quantity setter value 0..99.
int getQuantity{...} void setQuantityint{...}
float getUSPrice{...} void setUSPricefloat{...}
Optional to set Comment property. String getComment{...}
void setCommentString{...} XMLGregorianCalendar getShipDate;
Using JAXB Data Binding 5-7
void setShipDateXMLGregorianCalendar; Type constraint on PartNum setter value \d{3}-[A-Z]{2}.
String getPartNum{...} void setPartNumString{...} };
Local structural constraint 1 or more instances of Items.ItemType. ListItems.ItemType getItem{...}
} public class ObjectFactory {
type factories Object newInstanceClass javaInterface{...}
PurchaseOrderType createPurchaseOrderType{...} USAddress createUSAddress{...}
Items createItems{...} Items.ItemType createItemsItemType{...}
element factories JAXBElementPurchaseOrderTypecreatePurchaseOrderPurchaseOrderType{...}
JAXBElementString createCommentString value{...} }
5.3.1.2 Java-to-XML Mapping for Built-In Data Types
The following table lists alphabetically the supported Java data types and their equivalent XML Schema data types. For a list of the supported user-defined Java data
types, see Section 5.3.2.2, Supported Java User-Defined Data Types.
Table 5–2 Mapping Java Data Types to XML Schema Data Types
Java Data Type lower case indicates a primitive data type
XML Schema Data Type
boolean boolean byte byte
double double float float
long long int int
javax.activation.DataHand ler
base64Binary java.awt.Image
base64Binary java.lang.Object
anyType java.lang.String
string java.math.BigInteger
integer java.math.BigDecimal
decimal java.net.URI
string java.util.Calendar
dateTime java.util.Date
dateTime java.util.UUID
string javax.xml.datatype.XMLGre
gorianCalendar anySimpleType
javax.xml.datatype.Durati on
duration
5-8 Getting Started With JAX-WS Web Services for Oracle WebLogic Server
5.3.2 Supported User-Defined Data Types