37.3. 위젯 벤더 예
37.3.1. 위젯 명령 인터페이스
이 섹션에서는 Apache CXF에서 실제 애플리케이션을 해결하기 위해 사용되는 대체 그룹의 예를 보여줍니다. 서비스 및 소비자는 예 37.2. “Complex Types을 사용하는 대체 그룹” 에 정의된 위젯 대체 그룹을 사용하여 개발됩니다. 이 서비스는 checkWidgets 및 placeWidgetOrder 라는 두 가지 작업을 제공합니다. 예 37.12. “위젯 명령 인터페이스” 주문 서비스의 인터페이스를 표시합니다.
예 37.12. 위젯 명령 인터페이스
<message name="widgetOrder">
<part name="widgetOrderForm" type="xsd1:widgetOrderInfo"/>
</message>
<message name="widgetOrderBill">
<part name="widgetOrderConformation"
type="xsd1:widgetOrderBillInfo"/>
</message>
<message name="widgetMessage">
<part name="widgetPart" element="xsd1:widget" />
</message>
<message name="numWidgets">
<part name="numInventory" type="xsd:int" />
</message>
<portType name="orderWidgets">
<operation name="placeWidgetOrder">
<input message="tns:widgetOrder" name="order"/>
<output message="tns:widgetOrderBill" name="bill"/>
</operation>
<operation name="checkWidgets">
<input message="tns:widgetMessage" name="request" />
<output message="tns:numWidgets" name="response" />
</operation>
</portType>예 37.13. “위젯 주문 SEI” 에는 인터페이스에 대해 생성된 Java SEI가 표시됩니다.
예 37.13. 위젯 주문 SEI
@WebService(targetNamespace = "http://widgetVendor.com/widgetOrderForm", name = "orderWidgets")
@XmlSeeAlso({com.widgetvendor.types.widgettypes.ObjectFactory.class})
public interface OrderWidgets {
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult(name = "numInventory", targetNamespace = "", partName = "numInventory")
@WebMethod
public int checkWidgets(
@WebParam(partName = "widgetPart", name = "widget", targetNamespace = "http://widgetVendor.com/types/widgetTypes")
com.widgetvendor.types.widgettypes.WidgetType widgetPart
);
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult(name = "widgetOrderConformation", targetNamespace = "", partName = "widgetOrderConformation")
@WebMethod
public com.widgetvendor.types.widgettypes.WidgetOrderBillInfo placeWidgetOrder(
@WebParam(partName = "widgetOrderForm", name = "widgetOrderForm", targetNamespace = "")
com.widgetvendor.types.widgettypes.WidgetOrderInfo widgetOrderForm
) throws BadSize;
}참고
예제에서는 대체 그룹의 사용만 보여 주므로 일부 비즈니스 논리는 표시되지 않습니다.