Abbreviations:
* CXF - CXF integration layer
* ASIL - JBossWS Application Server Integration Layer
* SPI - JBossWS SPI - the only dependency reused cross different JBossWS abstractions
* DA - JBossWS Deployment Aspect
* UMDM - JBossWS Universal Meta Data Model
* JMS MD - AS JMS Meta Data
* AS API - compilation dependency on AS API classes
* IAC - in any case
Hi Jim,
first approach is fundamentally wrong because:
* it would violate our abstractions
* it wouldn't reuse existing code/architecture
We cannot introduce JBossWSCXF*Deployers because we would introduce CXF -> AS API dependency. Only allowed dependency
is CXF -> SPI. This is because AS architecture can/will change over time and we want to be AS agnostic IAC.
Yes, the solution 2 is little bit more complex one but we should always follow the golden programmers rule:
Either do it properly or don't do it at all (otherwise our code would become unmaintanable in the future).
Here are my suggestions how we should proceed with approach 2
(ensures proper abstractions, dependencies and code/architecture reuse):
* extend our UMDM (located in SPI) to provide JMS endpoint abstractions
* extend our DA framework to distinguish DA aspects intended to create web based endpoints and jms based endpoints
* update our ASIL (concretely WSDeploymentAspectDeployer) to distinguish between Web DAs and JMS DAs
* implement CXF DA that will map jboss-cxf.xml MD to our UMDM (ensures CXF -> SPI dependency)
* implement ASIL DA that will create JMS MD from our UMDM (ensures ASIL -> SPI dependency)
* implement CXF DA that will register plain JMS endpoints with CXF (ensures CXF -> SPI dependency)