축을 사용하여 webservice 가공물을 자동 생성 한 다음 응용 프로그램에서 사용되는 객체로 변환합니다. 이것을하기위한 합리적인 패턴이 있습니까? 우리는 축 생성 객체로부터 객체를 출력하기위한 변환 메소드를 작성했습니다. 축 객체를 응용 프로그램 객체로 변환하는 중간 클래스 집합을 작성했습니다. 이것을 접근하는 일반적인 방법이 있습니까?패턴 : 축 객체에서 Java 클래스 변환
답변
우리는 과거에도 비슷한 문제가 발생했습니다. 최근 Axis에서 생성 한 복잡한 웹 서비스의 경우 "MaintainOffersRequestTypeReqReqDataMaintEnhancementCancellationReason"과 같은 이름의 Java 클래스 157 개를 사용했습니다.
마지막 축약과 마찬가지로 축 생성 개체를 비즈니스 개체로 변환하는 쓰기 클래스를 작성했습니다. 나는 그것이 최선의 방법인지는 모르겠지만 그것은 확실히 실행 가능한 해결책이다.
올바르게 이해하면 Axis WSDL2Java 기능을 사용하여 WSDL에서 코드를 생성 한 다음 기존 애플리케이션 객체 모델에 매핑하려고합니다. 이 경우 JiBX 바인딩이있는 Axis를 사용하는 것이 좋습니다.
축 1을 사용하는 경우 비즈니스 클래스는 축 데이터 클래스와 동일한 정규화 된 이름을 가지며 다른 조건이 적용됩니다. 설정이 필요없는 축 클래스 대신 비즈니스 클래스를 사용할 수 있습니다. 우리는 여러 번 그렇게했습니다.
축 2의 경우 ADB (기본값) 이외의 데이터 바인딩에 문제가있어 Apache Commons Beanutils를 사용하여 Axis 클래스와 비즈니스 클래스간에 데이터를 광범위하게 복사합니다.
"축 생성"을 비즈니스 객체로 변환하려는 경우 객체 구현에서 다른 구현으로 복사하는 "매퍼"인 도저 (http://dozer.sourceforge.net/)와 같은 도구를 사용해 볼 수 있습니다. 사용 방법을 모르겠다. (번역을 XML 파일로 설명해야한다고 생각한다.) 그런 다음 작동해야한다. (나 자신을 사용하지는 않았지만 일부 동료가 비슷한 목적으로 사용했다.
나는 상식이 있다고 생각합니다. 그런 식으로 말입니다. 조금 추상적 인 당신의 마음과 상상 레이어.
- 기본 IO 및 기본 세션 기능 및/또는 자격 증명이있는 라이브러리를 얻을 수 있습니다.
- 변환 레이어를 만듭니다. 여기에서는 애플리케이션 종속 객체를 빌드하는 데 필요한 모든 코드를 배치합니다. 이 레이어를 응용 프로그램에 맞는 멋진 인터페이스로 완성하십시오.
변환 계층은 여러 가지 방법으로 수행 할 수 있습니다.
변환이 간단하면 첫 번째 레이어와 두 번째 레이어를 거의 하나로 병합 할 수 있습니다. 변환 기능을 제공하기 위해 POJOS를 확장하십시오. 이 코드는 적어도 두 조각의 코드를 자동으로 생성하고 확장 기능을 제공합니다.
여러 개의 작은 응용 프로그램 개체로 변환해야하는 거대한 XML에 대해 이야기하고 있다면. 보통, 그대로 제 층을 남겨 두 번째 사용 :
- 명령 패턴을 : 변환을 캡슐화.
- 변형이 더러워지면 : Chain of responsibility은 변환 트리를 생성하는 데 도움이됩니다.
나는이
도움이되기를 바랍니다