OK I think you are much better of using JAX-WS interceptors then. I think the JPA layer is too granular for what your needs are.

1. To activate, using CXF, add config to the beans.xml in your juddiv3.war:

http://cxf.apache.org/docs/jax-ws-configuration.html

Here is a example which shows how to provide interceptors, JAX-WS handlers, and properties:

<?xml version="1.0"  encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans";
       xmlns:jaxws="http://cxf.apache.org/jaxws";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xsi:schemaLocation="
          http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans.xsd
          http://cxf.apache.org/jaxws
          http://cxf.apache.org/schemas/jaxws.xsd";>

  <!-- Interceptors extend e.g.
       org.apache.cxf.phase.AbstractPhaseInterceptor -->
  <bean id="anotherInterceptor"  class="..."  />

  <!-- Handlers implement e.g. javax.xml.ws.handler.soap.SOAPHandler -->
  <bean id="jaxwsHandler"  class="..."  />

  <!-- The SOAP client bean -->
  <jaxws:client id="helloClient"
                serviceClass="demo.spring.HelloWorld"
                address="http://localhost:9002/HelloWorld";>
    <jaxws:inInterceptors>
      <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
      <ref bean="anotherInterceptor"/>
    </jaxws:inInterceptor>
    <jaxws:handlers>
      <ref bean="jaxwsHandler"  />
    </jaxws:handlers>
    <jaxws:properties>
      <entry key="mtom-enabled"  value="true"/>
    </jaxws:properties>
  </jaxws:client>
</beans>


http://svn.apache.org/repos/asf/juddi/tags/juddi-3.1.3/juddi-cxf/src/main/webapp/WEB-INF/beans.xml

2. I don't think you'd have to change code but in case you do need to set some annotations, it would be in this class:

http://svn.apache.org/repos/asf/juddi/tags/juddi-3.1.3/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java

3. Please let us know how that works out for you. It'd be great if you can add a blog post on our jUDDI Blog about it, and we could add it to our documentation.

Cheers,

--Kurt




http://cxf.apache.org/docs/jax-ws-configuration.html


On 4/25/13 11:08 AM, Subash Chaturanga wrote:


On Thu, Apr 25, 2013 at 8:20 PM, Kurt T Stam <[email protected] <mailto:[email protected]>> wrote:

    On 4/25/13 10:20 AM, Subash Chaturanga wrote:

        Please note: the tricky part is I need to do both my
        stuff(inserting to uddi registry  and inserting to X ) during
        the particular juddi call. (relevant JAXWS call for service
        insertion).

        ** So consider as when adding a service to uddi, my service
        insertion to X should happen before insertion to uddi
        registry. Appreciate any one possible solution for me to
        achieve this.


Hi Kurt,

    1. Before you go down the Interceptor path I guess the question is
    why you can't call into system X before calling into jUDDI from
    your client code.

Because it is not actually my client code calling to JUDDI, rather some system Y . In my case this Y is an ESB (OSB). So "Y" calls to my system's JUDDI server and inserts to the service to UDDI registry. In the same service call I want to call X web service. Hence in that sense, I believe my suggestion of JPA interceptor is correct.

    2. If you really need to call into system X from a JPA
    interceptor, then you should try find an example program
    demonstrating interceptors to learn about how an interceptor
    works. Are you planning on using hibernate or openjpa?

In fact, I am using juddi 3.x and it uses openjpa. Why JPA interceptor needed is because juddi insertions takes place through JPA calls .Those JAXWS services juddi provides has those JPA calls to do insertions to uddi data base. It is a bit hard to find proper example for JPA Interceptors in OpenJPA. That's why I drop a mail to juddi to check whether juddi have a mechanism to achieve my requirement without going to JPA level.

    Maybe you start here:
    
http://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/listeners.html,
    and look into the @PrePersist annotation ( which I think you can
    also set in the persistence.xml)
    Once you got that to work we can help you with which classes you
    would want to add interceptor to.

    3. If you make a good case for why you need this interception
    business, then we might also be able to add hooks right into the
    service layer; i.e. you'd be able to configure an endpoint and
    receive a call with the serialized XML on every SaveService call.

    --Kurt





--
Subash Chaturanga
Department of Computer Science & Engineering
University of Moratuwa
Sri Lanka

Blog - http://subashsdm.blogspot.com <http://subashsdm.blogspot.com/>/
Twitter - http://twitter.com/subash89

Reply via email to