I don't like this records management frameworkWe'll then have the records' management configuration, which is also something configured at server level (WSMemoryBufferRecorder, WSLogRecorder, etc. currently in stack-specific-jboss-beans.xml).
(don't take it personal Alessio, please ;) ).
I didn't notice on our forums or from our customers
they use it (I might be wrong of course)?
For now I'd say this is NICE TO HAVE FEATURE once we're done
with AS 7 integration work and we're passing TCK6 with it.
We can keep it in mind a provide integration hooks to our
JBossWS API/SPI so it's easily implementable in the future ;)
I don't see real world usecases here.Besides the easy things above, we should probably allow for pre-configuring a given application server instance with default endpoints (perhaps clients too in the future), meaning users can specify an endpoint configuration and have that endpoint included as part of the application server, the same way they would have had if they deployed an archive with the corresponding endpoint declaration [2].
If you'll provide some we can start discussing it.
For now I'd say again this is NICE TO HAVE FEATURE once we're done
with AS 7 integration work and we're passing TCK6 with it.
We can keep it in mind a provide integration hooks to our
JBossWS API/SPI so it's easily implementable in the future ;)
Yes. This is one of the reason I'd like to get started with this jbws 4 work asap, Carlo is needing any changes to the interface with WS well before AS 7 goes Beta1 (as EJB3 is meant for Beta1 as far as I understood)This is what we have today. But I definitely agree this needs further/proper cleanup!API REVIEW
In the process of revisiting the JBossWS SPI, we need to properly split the current jbossws-spi project contents into:
- a set of classes/interfaces required for proper abstraction of jbossws components (pretty much what we have today, 2 stacks, perhaps multiple supported target container[3], ...) and to have a defined interface towards other related jboss projects (EJB3 for instance)
BTW there's EJB3 integration review on my plate. Hopefully this will be fixed with AS7 integration.
What I'm saying is that AS7 deployers are not going to do all the things they used to do in AS6. Part of the work is not actually up to the deployers and needs to be factored out to a more generic service / set of services everybody can use, regardless of deployers being used or not.Yes, we'll discuss this later.- a public API meant for actual user consumption, which would end up in a AS7 module visible to user deployments
The latter is going to include the classes/interfaces the domain model maps to (ws config, records stuff, service/endpoint/deployment basic stuff like endpoint class, publish address, ...) and what's required for tooling (wsconsume / wsprovide Ant tasks, command classes, etc.)
This is good point for another discussion.
CONTAINER INTEGRATION
For integrating into AS7, we need to rethink the way jbossws handles deployments in terms of services (which are one of the key elements of AS7). At the end of the day, what the ws subsystem is supposed to do is providing facilities for starting/stopping webservice endpoints (and clients). Given the management requests of AS7, the domain model, etc. it's time to think about that as something not directly tied to the deployment process only, but generally available as a service instead. Other services in the application server might depend on or simply make use of this service [2]. The deployers (DeploymentUnitProcessors in AS7) should just be "clients" of this service.
For the beginning I'd say AS 7 service
is something similar to AS 6 deployers.
We've been leveraging AS 6 deployersWell, a good part of the changes in AS7 is in this service way of thinking. I'd like to get to a good design with that, then we can think about possible milestones to get there. Please note that anything not really make use of the AS facilities properly is not going to be pulled upstream and this is a major release both for AS and JBWS, so it's a chance for reviewing the design.
to call our DAs. I'd say for initial AS 7
integration we should leverage AS 7 service for that purpose.
Once this is done (and we'll be more familiar with AS 7 architecture)
we can get it to the next level.
please do not get me wrong, I'm not saying I want to directly use the Endpoint API. I'm just saying that we can see this similarly, we need to think about the deployment process in terms of a) something strictly related to setting up the container for the ws deployment, b) actually creating the endpoint and connecting it to the container. Theoretically speaking (b) is pretty much what is going to the service. This said, for sure we need to deal with the details, but that comes after agreeing on a vision.My 2c:To a certaint extent this way of thinking about the container integration fits with what has been done in JAXWS 2.2 Endpoint API and -for instance- the way an Apache CXF endpoint is started.
* This won't work for JAXRPC.
* nice idea, but we need to discuss it in more details
(i.e. how to do it for JAXWS endpoints (don't forget about EJB3 JAXWS endpoints here))
yes, that's what I've mentioned later in the WS Services section.Yes, we'll probably need to read proprietary SOAP stack DDs. Maybe another candidate for API?We should be able to parse and digest an endpoint configuration, properly setup the transport layer and then simply trigger the endpoint deployment.
Sure, this was written here to convey the idea of what should be up to the deployers and what should be in the service instead.Correct! Nice recapitulation and grouping ;)Currently (AS 5/6) the ws deployment goes through many ws deployers, most of which wrap jbossws "deployment aspects" (DA). Those can probably be splitted into few groups:
1) DAs dealing with figuring out / processing basic and container related informations (context root, url pattern, endpoint address, endpoint name)
2) DAs converting information coming from merged metadata (descriptors + annotations) into the jbossws-spi metadata
3) DAs dealing with the transport (creating / modifying the jbossweb metadata for ws endpoints)
4) DAs dealing with ws stack internals (for native: UMDM creating, eventing, rm, eager init, ... for cxf: jbossws-cxf descriptor creation, bus creation, ...)
Definitely!Some of these are most probably meant for remaining part of the deployers (probably 1,2,3), the rest (probably 4) is actually going to become part of the services providing facilities for starting/stopping an endpoint.
The jbossws-spi should be seen as the interface for feeding the ws services that deal with endpoints.
We'll discuss this in more details once we'll dive into AS 7 integration ;)While the AS7 / domain management system is going to simply make use of the public api part of jbossws-spi, the deployers are probably going to process all the metadata information coming from annotations and deployment descriptors into the jbossws-spi metadata and then feed the endpoint creation service. Deployers will also deal with / set required dependencies on other services involved in the deployment phase, for instance the web server service (which for instance will be required to properly create a context for the endpoint(s)).
OKOK, makes sense.
WS SERVICES
What is then required to be a (WS) service? Apart from some obvious facilities like the endpoint registry and a server configuration provider service, the main service is the one meant for starting/stopping endpoints.
I like it. U're becoming perfectionist like me Alessio :)We need to carefully define a stable interface for this service, so that it can be maintained without much changes in the future. This mainly implies establishing the inputs for creating/starting an endpoint, basically the metadata carrying the required information for that. Ideally that should already be covered by what we have in jbossws-spi, plus stack specific configuration stuff.
This is too low level. In general it makes sense to me.For CXF that's everything that can be included in the jbossws-cxf.xml / cxf.xml, for Native it's what comes from the union of the info in endpoint configurations (configName / configFile...) and other additional optional descriptors (e.g. the jboss-wsse-*.xml).
For the sake of practically supporting future extensions / changes, the stuff above should most probably be modelled as AS7 extensions, each coming with its own parser bound to a given xsd namespace. For supporting advanced usecases (iow WS-*), the domain model should probably simply accept a pointer to additional xml configuration (beyond what's in the basic user API which is part of jbossws-spi, etc. - see above). Depending on the default namespace of the provided xml, the proper parser (coming from the installed ws stack) would be used and the domain enriched with the provided information for creating endpoint(s).
At the end of the day, most (if not all) the information is the Bus (for jbossws-cxf) / the UMDM (for jbossws-native).
But we'll discuss this when we'll start/be working on it.
-- Alessio Soldano Web Service Lead, JBoss