On Mon, Apr 29, 2013 at 2:53 AM, Alex O'Ree <[email protected]> wrote:
> Kurt > > > 1. How do you add services without going through the webservices API, > I think that using a JPA filter (or whatever it's called) to insert > services directly is probably more hassle that its worth. It will also > bypass security checks and validation procedures. I'd consider both of > the to be pretty important > Hi Sorry for being off the topic. May I know where in juddi I can find the orm.xml related to openjpa. I want to add a default listener to that. > On Sun, Apr 28, 2013 at 4:10 PM, Kurt Stam <[email protected]> wrote: > > 1. How do you add services without going through the webservices API, > > > > 2. Sorry I don't know why the listener is causing this error. My advice > > would be to start simple with 1 class and learn about the listener. > > > > --Kurt > > > > On Apr 28, 2013, at 12:56, Subash Chaturanga <[email protected]> > wrote: > > > > Hi Kurt, > > Thanks again for the responses. > > JAX-WS interceptor is seems possible. (I didn't do it with the real > > scenario, but a PoC without juddi and my environment). > > > > There can be occasions where people will add services to uddi registry > > without going through jax-ws calls. AFAIK we can use java APIs to do so. > In > > that sense JAX-WS will not work for my case. > > > > So for JPA intercepting I added an Entiry Listener > > annotation(@EntityListeners(MyProjectEntityListener.class) to > > org.apache.juddi.model.BusinessEntity class in juddi. And I am getting > this. > > Any idea why this occurs. > > > > > > org.apache.openjpa.persistence.PersistenceException: > > sun.reflect.annotation.TypeNotPresentExceptionProxy > > at > > > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:218) > > at > > > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156) > > at > > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227) > > at > > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154) > > at > > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60) > > at > > > org.apache.juddi.config.PersistenceManager.getEntityManager(PersistenceManager.java:45) > > at > > > org.apache.juddi.config.AppConfig.getPersistentConfiguration(AppConfig.java:109) > > at org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:95) > > at org.apache.juddi.config.AppConfig.<init>(AppConfig.java:62) > > at org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:183) > > at org.apache.juddi.config.AppConfig.getConfiguration(AppConfig.java:205) > > at org.apache.juddi.Registry.start(Registry.java:55) > > > > > > > > On Thu, Apr 25, 2013 at 10:43 PM, Alex O'Ree <[email protected]> > wrote: > >> > >> I concur, a web service handler aka interceptor is your best bet. > > > > Hi Alex, > > Can you please explain a bit more detail how to achieve this through web > > service handler ? > >> > >> > >> On Thu, Apr 25, 2013 at 11:36 AM, Subash Chaturanga < > [email protected]> > >> wrote: > >> > Hi Kurt, > >> > Thank you for the detailed description of the solution and links .I > will > >> > go > >> > through this and will update the thread once done. And hopefully once > >> > succeeded will definitely add a blog post too, since this is a use > case > >> > that > >> > people might want to achieve. > >> > > >> > > >> > On Thu, Apr 25, 2013 at 8:58 PM, Kurt T Stam <[email protected]> > >> > wrote: > >> >> > >> >> 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]> > >> >> 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/ > >> >> Twitter - http://twitter.com/subash89 > >> >> > >> >> > >> >> > >> > > >> > > >> > > >> > -- > >> > Subash Chaturanga > >> > Department of Computer Science & Engineering > >> > University of Moratuwa > >> > Sri Lanka > >> > > >> > Blog - http://subashsdm.blogspot.com/ > >> > Twitter - http://twitter.com/subash89 > >> > > > > > > > > > > > -- > > Subash Chaturanga > > Department of Computer Science & Engineering > > University of Moratuwa > > Sri Lanka > > > > Blog - http://subashsdm.blogspot.com/ > > Twitter - http://twitter.com/subash89 > > > -- Subash Chaturanga Department of Computer Science & Engineering University of Moratuwa Sri Lanka Blog - http://subashsdm.blogspot.com/ Twitter - http://twitter.com/subash89
