2017-02-08 5 views
0

우리는 통신 서비스 공급자를 대상으로 Java EE 애플리케이션을 구축했습니다. 응용 프로그램은 모든 종류의 계산을 수행합니다. 우리는 가능한 경우 응용 프로그램을 유연하게 유지하여 클라이언트가 필요에 따라 새로운 유형의 계산을 추가 할 수있게하려고합니다. "AbstractCalculation",이 추상 클래스는 코드에서 모든 곳에서 사용되는 "계산"등과 같은 방법으로 : 새로운 고객의 특정 클래스로 Java 응용 프로그램을 확장 할 수 있습니까?

이 계산을 실행하기 위해, 핵심 응용 프로그램은 추상 클래스 있습니다. 그

@Entity 
@Table “ALGO” 
abstract class AbstractCalculation 
(…) 

다음으로,이 AbstractCalculation 클래스를 확장 핵심 구체적인 클래스있다.

: 그 클래스는

@Entity 
@Table “ALGO_ONE” 
class CalculateAlgorithmOne extends AbstractCalculation 
(…) 

@Entity 
@Table “ALGO_TWO” 
class CalculateAlgorithmTwo extends AbstractCalculation 
(…) 

그리고 물론 (계산에 고려되어야 모든 클래스를 반환 할 수 있습니다 단순히 쿼리), 이러한 클래스가의 persistence.xml 응용 프로그램 에 정의되어 JPA 엔티티입니다

Mypackage.CalculateAlgorithmOne Mypackage.CalculateAlgorithmTwo 

신청서는 EAR 파일으로 포장됩니다.

고객이 자신의 제 3 유형의 계산을 아직 도입하지 않았다고 가정 해 보겠습니다. 코드 에 아직 없습니다.

MyCustomerCalculateAlgorithThree. 

이 클래스는 해당 고객에게만 관련이 있으며 다른 고객에게 제공해서는 안됩니다.

1/We는 소프트웨어 공급 업체로서이 새로운 클래스를 포함하고 해당 고객을위한 특정 EAR 파일을 생성 할 수 있습니다. 다른 고객에게는 새 클래스가없는 EAR 파일이 계속있게됩니다. 많은 고객을 대상으로하지 않기 때문에 관리가 가능합니다 (대용량 고객에게는 매우 특화된 응용 프로그램입니다).

2/EAR 파일을 변경하지 않고이 고객 클래스를 포함 할 수있는 방법이 있습니까? 이상적으로 우리는 새로운 클래스 (심지어 조사/지원 목적을 위해 따로 따로 있음)를 인식하지 않아야합니다. 이것이 불가능하다고 생각합니다 (모든 클래스는 동일한 EAR의 일부 여야 함)?

3/고객이 제 3 자 응용 프로그램에 자신의 클래스를 추가하는 방법에 관한 다른 제안이나 모범 사례가 있습니까? 피드백

감사합니다 사전에

감사,

답변

0

예, 방법이있다. 잘 정의 된 API를 사용하십시오. API는 무엇이든 될 수 있습니다. REST API 및 마이크로 서비스를 사용할 수 있습니다. EJB를 사용하고 조회 할 수 있습니다 ....

+0

감사합니다. REST API의 경우 : 애플리케이션이 고객의 특정 API를 어떻게 "발견"해야합니까? – JohnSteed