JAX-RPC 캘린더 및 기타 날짜 데이터 유형을 사용하지 마십시오

이 규칙은 다음 스키마 유형 중 하나에 대한 참조에 플래그를 지정합니다: http://www.w3.org/2001/XMLSchema:duration, http://www.w3.org/2001/XMLSchema:dateTime, http://www.w3.org/2001/XMLSchema:time, http://www.w3.org/2001/XMLSchema:date, http://www.w3.org/2001/XMLSchema:gYearMonth, http://www.w3.org/2001/XMLSchema:gYear, NAMESPACE:gMonth, http://www.w3.org/2001/XMLSchema:gDay

이러한 스키마 유형 및 해당 JAX-RPC 관련 Java 유형 java.util.String java.util.Calendar 는 JAX-WS에서 지원되지 않습니다.
JAX-WS 및 JAXB로 마이그레이션하려면 다음이 필요합니다 지원되는 Java 유형과 함께 해당 스키마 유형을 사용해야 합니다 javax.xml.datatype.XMLGregorianCalendar 대신.

JAX-RPC 캘린더 클래스의 예는 다음과 같습니다:

import java.util.Calendar;
import java.rmi.RemoteException;
    
public Calendar calculateShippingDate(Calendar requestedDate) throws RemoteException; {
날짜를 보낸 날짜로 설정하고 7일을 더합니다.
    requestedDate.addjava.util.Calendar.DAY_OF_MONTH, 7);
......// ......// ......// .
    
반환 requestedDate;    
   }

JAX-WS XMLGregorianCalendar 클래스의 예는 다음과 같습니다:

import javax.xml.datatype.XMLGregorianCalendar;
' javax.xml.datatype.DatatypeConfigurationException;' 가져오기
    
public XMLGregorianCalendar calculateShippingDate(
    XMLGregorianCalendar requestedDate) {
try {{}
데이터 유형 팩토리를 만듭니다.
        DatatypeFactory df = ' DatatypeFactory.newInstance();
날짜를 저희에게 보낸 날짜로 설정하고 7일을 추가합니다.
  기간 기간 = df.newDuration("P7D");
        requestedDate.추가(기간);
   } catchDatatypeConfigurationException e) {
// TODO 자동 생성된 캐치 블록
        e.printStackTrace();
   }
......// ......// ......// ......// ......// ......// ......// ......// ......// .......
    
반환 requestedDate;
   }

위의 예제에서 볼 수 있듯이 입력 매개 변수는 유형이 변경되었습니다 java.util.Calendar - javax.xml.datatype.XMLGregorianCalendar .
이는 WSDL에서 이러한 매개변수를 유형으로 지정했기 때문입니다, xsd:dateTime 로 매핑하고, JAX-RPC는 이 데이터 유형을 java.util.Calendar 로 매핑하는 반면, JAX-WS와 JAXB는 이를 javax.xml.datatype.XMLGregorianCalendar .