Hi,

I have been having few thoughts on federated deployment as well. Currently we wire services to references statically. However, I think this is more of a runtime concern rather than a build/package/deploy time concern. An SCA system could be realised as a set of federated heterogenous JVMs each hosting a different set of components. Each component would publish the services it provide based on supported MEPs, IN/OUT parameters, supported transport bindings and policy intent. Based on the published information, an adminstrator should be able to wire this services to a compatible reference for a consumer component at runtime. This wiring should be dynamically amendable to cater for such requirements like meeting SLAs, policy changes etc. I am not sure how much this currently fits into the SCA spec. However, as a user this is something I have looked for in ESBs. I would say a consumer component only need to know about the contract and MEP (to a certain extent) of the service it use. The assembly of an available prospective service instance is more of a runtime concern than deployment time.

Another thing I am curious about is scope containers, instance pooling and thread confinement. This is kind of related to the JPA integration work I have been doing. Certain resources that are injected into components may not be thread safe. In such scenarios, how do we make sure the components themselves are thread confined to avoid race conditions. Is instance pooling for stateless components a possible solution?

Ta
Meeraj


From: Jim Marino <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: [email protected]
Subject: Re: What's next for SCA?
Date: Tue, 24 Oct 2006 10:21:45 -0700


On Oct 24, 2006, at 9:37 AM, Jeremy Boynes wrote:

With M2 mostly behind us, I'd like look forward to things that we can tackle next for SCA/Java.

I think there is still some cleanup to be done - fixing bugs that we find in M2, cleaning up some of the compromises we made, and so forth. As part of that I think we still need more coverage on testing at all levels - unit, function, integration. I'd like to see us be in a position to regularly publish development snapshots that can be run through some form of test suite.

I also think there's quite a few improvements we can make to the classloading infrastructure. The issues with Spring and SDO show the need for a controlled way to share classes between application code and the runtime; we also need to deal with the isolation issues in the itest plugin (as in, dealing with the current lack of isolation). This is part of a general issue related to packaging formats and how composites correspond to physical artifacts in general.

Yes I think this is critical, especially in multi-VM environments. In the spec group we are dealing with the issue of deployment and packaging now so I think our work on this would correspond nicely to that.

This leads into the question of how we deploy things to servers. At the moment we only support server functions by being part of a WAR deployed to an application server; a user still needs to do quite a bit of work to set up the war (although the plugin helps). To support users in general and integration testing I think we need a way to deploy/undeploy SCA applications to running servers in some native form. We can do this either through extensions to existing servers (like the Tomcat integration from M1) or by enhancing the standalone environment.

Existing server integration is a nice-to-have but IMO we require a standalone environment that can support the full range of SCA features which is not easily done in the former.

Once we have the notion of multiple environments, I think we're in a position to tackle the more interesting aspects of SCA dealing with the composition of services across a network rather than locally as we have now. Finding a way to map a logical SCA system onto a mesh of servers and handling the interconnections between the system's services.

Yes this will likely entail some type of service discovery. I've been looking at zeroconf and perhaps UPnP as ways of doing this (support should be pluggable) and when I have a better idea I will post a write-up to the list.

Tied into that we should also start to look at the policy and intention parts of the specification, providing support for core aspects such as security, reliability and transactions. We have the hooks in the fabric for attaching policy but we need the implementations of these policies and the mechanisms for ensuring the right implementations get engaged.

We are going to need to deal with how intents are mapped to policy sets and then runtime artifacts. I see this "intent engine" as a key subsystem moving forward. I was discussing this the other day with Felix and I'll kick off another discussion on the list related to that since it is a broad topic.

We may also need to revisit the async programming model, both from the spec side and our implementation. I have a gut feeling that there are issues lurking there that don't make this as easy for users as we would like. We also need to extend what we have to support async MEPs on the wire rather than the simple sync MEP we have now.

Yes plus handling of stateful conversations
Finally, there's a general issue with adding additional bindings and containers and finishing what we have already (there were quite a few in M2 that we didn't think were ready for binary distribution). There seem to be quite a few in the pipe with talk of JMS and EJB, JDBC and declarative DAS.

This is just of brain dump of where my thinking is at the moment, I'm sure everyone has their own thoughts about things we should tackle. It would be good to get to them all on the table :-)

It may make sense to start to categorize these in buckets. My brain dump would be:

1. SCA fabric, a.k.a. "SCA system"
- How an SCA System is (auto)constituted
- Service discovery

2. Deployment, provisioning and Management

- How to get things into an SCA system, how logical artifacts are mapped to physical runtime artifacts, and how to manage what is going on

3. Spec alignment
- Refactoring of core to support pending spec changes around services and references

4. Host environments
- A "real" standalone container, particularly to support 1 & 2
- OSGi support

5. Programming model
- Our programming model needs to support "high-value" SCA features
- Stateful conversations
- How databinding is specified
- Complex property support
- Improved autowire capability, including the ability to autowire by intents and exposure of autowire to applications
- Better web application support

6. Policy and intents
- We need to support the use of intents for allowing the runtime to apply policies as well as select wire targets
- Intent mapping engine
- Transactions

7. Extensions
- Classloader isolation
- Complete (or prune) existing extensions, add new extensions such as JMS and AMQP binding support (we may want to use AMQP as the "default" SCA binding)

8. Integration test harness and integration tests

9. Better across-the-board test coverage

10. Better samples that demonstrate the features mentioned above and show why SCA makes things substantially easier

I'm planning on getting involved in service discovery, stateful conversations, improved autowiring and integration testing...

Jim


--
Jeremy


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


_________________________________________________________________
Download the new Windows Live Toolbar, including Desktop search! http://toolbar.live.com/?mkt=en-gb


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to