0
저는 Spring WS 및 JiBX를 처음 사용합니다. 나는 주석을 사용하지 않았다. Spring WS에서 Jibx를 사용하는 동안 다음과 같은 오류가 발생합니다.봄에 JiBX 비 정렬 화 예외가 발생했습니다.
JiBX unmarshalling exception: No unmarshaller for element "{http://www.visu.com/pos/soapws/}orderRequest" (line 1, col 103); nested exception is org.jibx.runtime.JiBXException: No unmarshaller for element "{http://www.visu.com/pos/soapws/}orderRequest"
여기
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.visu.com/pos/soapws/" elementFormDefault="qualified" targetNamespace="http://www.visu.com/pos/soapws/">
<xs:element type="tns:orderRequest" name="orderRequest"/>
<xs:complexType name="orderRequest">
<xs:sequence>
<xs:element type="tns:order" name="order" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element type="tns:order" name="order"/>
<xs:complexType name="order">
<xs:sequence>
<xs:element name="customer" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="firstName" minOccurs="0"/>
<xs:element type="xs:string" name="lastName" minOccurs="0"/>
<xs:element type="xs:string" name="middleName" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute type="xs:long" use="required" name="customerNumber"/>
</xs:complexType>
</xs:element>
<xs:element type="tns:address" name="billTo" minOccurs="0"/>
<xs:element name="shipping" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="STANDARD_MAIL"/>
<xs:enumeration value="PRIORITY_MAIL"/>
<xs:enumeration value="INTERNATIONAL_MAIL"/>
<xs:enumeration value="DOMESTIC_EXPRESS"/>
<xs:enumeration value="INTERNATIONAL_EXPRESS"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element type="tns:address" name="shipTo" minOccurs="0"/>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="id" minOccurs="0"/>
<xs:element type="xs:string" name="description" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:int" use="required" name="quantity"/>
<xs:attribute type="xs:float" use="required" name="price"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:long" use="required" name="orderNumber"/>
<xs:attribute type="xs:date" name="orderDate"/>
<xs:attribute type="xs:date" name="shipDate"/>
<xs:attribute type="xs:float" name="total"/>
</xs:complexType>
<xs:complexType name="address">
<xs:sequence>
<xs:element type="xs:string" name="street1" minOccurs="0"/>
<xs:element type="xs:string" name="street2" minOccurs="0"/>
<xs:element type="xs:string" name="city" minOccurs="0"/>
<xs:element type="xs:string" name="state" minOccurs="0"/>
<xs:element type="xs:string" name="postCode" minOccurs="0"/>
<xs:element type="xs:string" name="country" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="orderResponse">
<xs:sequence>
<xs:element type="xs:string" name="orderResponse" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:element type="tns:orderResponse" name="orderResponse"/>
</xs:schema>
가 검증 된 결합을 위해 사용되는 제 끝점 스프링 구성
public class OrderEndPoint extends AbstractMarshallingPayloadEndpoint{
private Marshaller marshaller;
private Unmarshaller unmarshaller;
private OrderService orderService;
public OrderEndPoint(final OrderService orderService, final Marshaller marshaller, final Unmarshaller unmarshaller) {
super(marshaller);
super.setUnmarshaller(unmarshaller);
//this.marshaller = marshaller;
//this.unmarshaller = unmarshaller;
this.orderService = orderService;
System.out.println("This is Order End point constructor");
}
@Override
protected Object invokeInternal(final Object newOrder) throws Exception {
System.out.println("This is test for Invoke Internal");
final OrderRequest orderReq = (OrderRequest)newOrder;
final Order order = orderReq.getOrder();
this.orderService.placeOrder(order);
return "Order with the order number "+order.getOrderNumber()+" saved successfully";
}
}
이하<!-- Jibx marshellers -->
<bean id="unmarshaller" class="org.springframework.oxm.jibx.JibxMarshaller">
<property name="targetClass" value="com.visu.pos.soapws.model.OrderRequest"/>
<property name="bindingName" value="binding"/>
</bean>
<bean id="marshaller" class="org.springframework.oxm.jibx.JibxMarshaller">
<property name="targetClass" value="com.visu.pos.soapws.model.OrderResponse"/>
<property name="bindingName" value="binding"/>
</bean>
가 Order.xsd이다 Jibx 구현 그물 별도로 Marshaller와 Unmarshaller가 필요하지 않습니다. 나는 마샬 러를 선언했지만이 오류를 던지고있다. 내가 사용할 수있는 모든 옵션을 시도했지만 아무 쓸모가. 이 점에 대해 도움을주십시오. 미리 감사드립니다 !! orderService
에 대한 OrderEndPoint
에서 세터와 게터를 만들 needed.Just하지 OrderEndPoint
콩 생성자 주입을 만드는 동안