10 Replies Latest reply on Jun 25, 2006 11:12 PM by anil.saldhana

    Registry for JBoss ESB

    mugdho

      As we saw in a previous discussion that we require a Registry for our ESB. Over the past one month I looked thru JAXR API and the registry used in JBoss WS.
      The JAXR API is implementation independant and allows us to use UDDI, ebXML or any other type of registry provider. Although UDDI seems to the method of choice for implementation for most registries, we can choose a different method if required.

      For the moment I have the following questions in mind:
      1) Firstly, do we go with UDDI or some other method for the registry.
      2) Are we developing the registry from grass root or will we use and further enhance some existing registry? I suppose Rosetta will be having a registry present. Perhaps we can enhance that. Since we are using JAXR, all we need to take care that the registry is JAXR compliant.
      3) How will we be hosting the registry. Will it be along with the ESB Core? Mark had pointed out an approach like DNS servers having the registries on multiple nodes. In that case the registry will be running as a service or a daemon.
      4) Will we be using the JAXR API directly or build our own framework around it? Depending upon the usage perhaps we can decide on that.

      So folks, do let me know what you feel about this. I will think of some more questions which we can ponder about over the weekend.

        • 1. Re: Registry for JBoss ESB
          marklittle

          Hi Mughdo. You should post the link to the wiki pages you produced on the subject.

          Some quick answers:

          (i) we need to support UDDI because it is the one registry implementation many of our customers are asking us for. But obviously not to the exclusion of other possible implementations.
          (ii) Rosetta has a basic registry that we will have to wrap in JAX-R too. But it can't be the only implementation we support.
          (iii) how the registry is hosted (co-located "service" or stand-alone service, for example), will be up to the deployer. If we approach this correctly, it will all be transparent to the user anyway.
          (iv) Not sure, but I think I agree with your last sentence: let's try it and see.

          • 2. Re: Registry for JBoss ESB
            mugdho

            I have put together some basics of the JAXR API here. it gives a brief overview of JAXR API classes and methods.

            • 3. Re: Registry for JBoss ESB
              anil.saldhana
              • 4. Re: Registry for JBoss ESB
                marklittle

                Thanks Anil. Mughdo, can you link in those pages too. jUDDI is probably the simplest registry to look to support initially, even if just as a proof point for the JAX-R support. However, as I've said many times: it can't be at the expense of tying ourselves to Web Services, so let us know if that is something we need to consider.

                • 5. Re: Registry for JBoss ESB
                  mugdho

                  Mark, In case we keep the Registry independant of the WS stack, we would need to host it on some server. And it should be in such a way that JAXR should be able to access it. I am just wondering if JAXR uses WS API internally for connecting to the server. In that case we would have to work out some other way of bypassing the WS stack

                  • 6. Re: Registry for JBoss ESB
                    marklittle

                    Is JAX-R WS specific? I haven't looked at it in depth enough to say, but I always thought the only dependency it has was on XML (which is fair enough). Now if there's an implementation of it that is WS specific that's a different thing, but I was wondering more about what the spec. actually says rather than implementation choices at this stage.

                    • 7. Re: Registry for JBoss ESB
                      anil.saldhana

                      The messages floating in the wire are soap messages. The default JAXR implementation JBoss uses is Apache Scout (and it uses the Saaj specification).


                      In Branch_4_0 testsuite, there are multiple JAXR tests that test against the Apache jUDDI integration in JBoss 4.0.x That is a good starting point for this initiative in JBoss ESB for a registry.

                      • 8. Re: Registry for JBoss ESB
                        marklittle

                         

                        "anil.saldhana@jboss.com" wrote:
                        The messages floating in the wire are soap messages.


                        Is this defined by the spec? Last time I looked (version 0.9), this wasn't defined unless you used JAX-RPC, which was optional anyway. Obviously if we want to support UDDI then there's not much choice, but in general I was under the impression JAX-R didn't mandate SOAP for all backend implementations.

                        The default JAXR implementation JBoss uses is Apache Scout (and it uses the Saaj specification).

                        In Branch_4_0 testsuite, there are multiple JAXR tests that test against the Apache jUDDI integration in JBoss 4.0.x That is a good starting point for this initiative in JBoss ESB for a registry.


                        Only for the Web Services instances. Not for more general (non-WS) deployments. We need to be able to support registries that are closely tailored to the rest of the deployment choices for the ESB and not at odds with it.

                        We can/should certainly look at jUDDI (and other UDDI implementations), as I've pointed out before, because many users expect it. Hopefully even for an initial product release! However, I want to be absolutely certain that JAX-R isn't going to tie us to SOAP for all registry implementations. As I said, my understanding based on the 0.9 version of the spec. was that it wouldn't. I need to go and check the final spec.

                        • 9. Re: Registry for JBoss ESB
                          marklittle

                          OK, so version 1.0 of the spec is as clear as 0.9 on the subject:


                          1.7.3 JAX-RPC

                          Java API for XML-based RPC or JAX-RPC provides an API for XML-based RPC communication in the Java platform. Implementations of the JAXR providers may use JAX-RPC for communication between JAXR providers and registry providers that export a SOAP-based RPC like interface (e.g. UDDI).


                          Which is good: as suspected, it doesn't tie us to SOAP - that is a binding choice for the implementation. Our registry service must not force that choice to be Web Services based, despite the fact we want to support UDDI. That should be fairly straightforward to architect: yet another level of indirection.

                          • 10. Re: Registry for JBoss ESB
                            anil.saldhana

                            Apache Scout relies on Apache jUDDI proxy framework as the transport mechanism. In theory, you can bind the xml to any transport.

                            Here is the binding to SOAP used in JBoss to talk to a backend juddi service (in theory any web service registry).
                            http://fisheye.jboss.com/viewrep/~raw,r=1.1.2.3/JBoss/contrib/varia/src/main/org/jboss/jaxr/juddi/transport/SaajTransport.java

                            Apache jUDDI transport interface is roughly:

                            public interface transport
                            {
                            public String send(String request, URL endpointURL)
                             throws RegistryException;
                            public Element send(Element request, URL endpointURL)
                             throws RegistryException;
                            }