That is probably because when creating an osgi bundle, EI simply wraps around the existing jar. So, any META-INF/services you had will be hidden under that wrapped jar.
You can create your own osgi bundle via maven using a simple pom.xml like this. In there, you need to mention three things. 1. Your maven dependency for openjpa-all 2. Export packages - the openjpa-all has several such as - org.apache.openjpa.*, serp.* 3. Specify the resource files to copy This ought to do it. [1] https://github.com/wso2/orbit/blob/master/hazelcast/3.5.4.wso2v2/pom.xml On Fri, May 5, 2017 at 2:07 PM, Thomas LEGRAND <thomas.legr...@versusmind.eu > wrote: > Hello, > > That seems to be OK :) > > osgi> p org.apache.openjpa.persistence > org.apache.openjpa.persistence; version="0.0.0"<openjpa_all_2.4.2_1.0.0 > [132]> > org.apache.openjpa.persistence; version="2.3.0"<tomee_1.7.2.wso2v2 [632]> > compass_2.0.1.wso2v2 [54] imports > tomcat_7.0.75.wso2v1 [627] imports > osgi> ss openjpa > "Framework is launched." > > > id State Bundle > 132 ACTIVE openjpa_all_2.4.2_1.0.0 > osgi> > > So, I deployed my little JPA project and I can see that my package is > "registered": > > osgi> p my.little.project.jpa > my.little.project.jpa; version="1.0.0"<mylittleproject-jpa_1.0.0 [60]> > synapse-core_2.1.7.wso2v13 [619] imports > osgi> > > So I tried to invoke my class to retrieve an EntityManager and now, I have: > > javax.persistence.PersistenceException: Failed to load provider from > META-INF/services > > I think that it is because the services/ directory in the META-INF in the > openjpa bundle is not parsed and I don't know what to do because this is > not me who generate the OSGi bundle but the ESB at startup. > > Do you have an idea? > > Regards, > > Thomas > > > 2017-05-04 20:37 GMT+02:00 KasunG Gajasinghe <kas...@wso2.com>: > >> >> I do not think openjpa register any osgi services. Can you check whether >> the package is exposed? Also verify the status of the openjpa bundle. >> >> osgi> p org.apache.openjpa.persistence >> osgi> ss openjpa >> >> On Thu, May 4, 2017 at 7:01 PM, Thomas LEGRAND < >> thomas.legr...@versusmind.eu> wrote: >> >>> Hello again :) >>> >>> I retrieved the openjpa-all-2.4.2.jar file and dropped it in the >>> <WSO2_ESB_HOME>/lib >>> directory to let the runtime taking care of the bundle generation during >>> the startup. The effect was the generation of the file >>> openjpa_all_2.4.2_1.0.0.jar in the directory <WSO2_ESB_HOME>/dropins. >>> >>> I restarted the EI with: >>> >>> D:\ProjetESB\wso2ei-6.0.0\bin> .\integrator.bat -DosgiConsole=19444 >>> >>> So I can connect to the OSGI console via telnet. But, when I try to >>> retrieve the objectclasses starting with org.apache.openjpa.*, I have >>> nothing :( >>> >>> osgi> services (objectclass=org.apache.openjpa.*) >>> "No registered services." >>> >>> Am I missing something? >>> >>> Regards, >>> >>> Thomas >>> >>> 2017-05-04 10:49 GMT+02:00 KasunG Gajasinghe <kas...@wso2.com>: >>> >>>> Hi Thomas, >>>> >>>> Well, the connector itself cannot be deployed as an osgi bundle. But, >>>> you can call classes in osgi bundles from your connector. So, place your >>>> JPA logic in an osgi bundle and add it to dropins/ folder. Then, call that >>>> from your connector. >>>> >>>> This should give you flexibility over your classloading. I cannot >>>> comment on JPA stuff though. >>>> >>>> On Thu, May 4, 2017 at 1:26 PM, Thomas LEGRAND < >>>> thomas.legr...@versusmind.eu> wrote: >>>> >>>>> Hello KasunG, >>>>> >>>>> I forgot to mention that I am using wso2ei-6.0.0. >>>>> >>>>> During the build of my connector, I noticed that a .jar is created >>>>> with the .zip for the connector so I tried to deploy it. Actually, I tried >>>>> the following directories and my sequence does not find any of the >>>>> components like if my connector was not deployed : >>>>> - <WSO2_ESB_HOME>/repository/components/dropins (this directory did >>>>> not exist so I created it) >>>>> - <WSO2_ESB_HOME>/dropins >>>>> >>>>> In addition, I don't find anything in the documentation mentioning >>>>> that we can deploy connectors as an OSGi bundle :( >>>>> >>>>> When I deploy the .zip of the connector via the interface, it is >>>>> deployed in <WSO2_ESB_HOME>/repository/deployment/server/synapse-libs >>>>> which is the same directory used by Synapse: >>>>> http://synapse.apache.org/userguide/template_library.html >>>>> >>>>> Concerning the "architecture" of my component, I deployed a .zip with >>>>> a META-INF directory containing the persistence.xml but I don't think it >>>>> is >>>>> used like the absence of mention in the Synaspe documentation above. :) >>>>> Then, I call OpenJPA with the following lines: >>>>> >>>>> EntityManagerFactory emf = Persistence.createEntityManage >>>>> rFactory("my-pu"); >>>>> EntityManager mgr = emf.createEntityManager(); >>>>> >>>>> But then, I have the exception. >>>>> >>>>> I made a topic on StackOverflow one or two weeks ago: >>>>> https://stackoverflow.com/questions/43538743/wso2-is-there-a >>>>> -way-to-use-jpa-in-a-custom-connector >>>>> >>>>> I you know a documentation to generate an OSGi bundle for a connector, >>>>> I am very interested. :) >>>>> >>>>> Regards, >>>>> >>>>> Thomas >>>>> >>>>> 2017-05-03 18:29 GMT+02:00 KasunG Gajasinghe <kas...@wso2.com>: >>>>> >>>>>> You are working in an OSGi environment, so you need to be thinking >>>>>> from the osgi classloading perspective. Each osgi bundle under >>>>>> repository/components/{plugins,dropins} has its own classloader and >>>>>> a classpath. >>>>>> >>>>>> Hence, the place you put your persistence.xml is important. I'm not >>>>>> sure how you call OpenJPA, so I cannot comment on what steps to follow. >>>>>> But >>>>>> in essence, re-build your connector as an osgi bundle (its just a jar >>>>>> with >>>>>> a set of manifest entries in MANIFEST.MF), and place it in >>>>>> repository/components/dropins. I have not tested this myself though. >>>>>> >>>>>> Regards, >>>>>> KasunG >>>>>> >>>>>> >>>>>> On Wed, May 3, 2017 at 8:38 PM, Thomas LEGRAND < >>>>>> thomas.legr...@versusmind.eu> wrote: >>>>>> >>>>>>> Hello everybody, >>>>>>> >>>>>>> I am currently writing a custom connector to retrieve information >>>>>>> from a database. Because the mediators to do so does not fit my needs, >>>>>>> I am >>>>>>> using a custom Java class which is currently implemented to retrieve a >>>>>>> DataSource via the JNDI name I configured in the ESB interface. That >>>>>>> works >>>>>>> nicely :) >>>>>>> >>>>>>> But then, for maintenance purpose, I would like to use JPA >>>>>>> (preferably, the OpenJPA implementation :)) but it is like the >>>>>>> persistence.xml is not even read. :( >>>>>>> My libraries are placed in the lib/ directory in the generated zip >>>>>>> of my connector and I don't have any problem using the classes of >>>>>>> OpenJPA. >>>>>>> Actually, just this error message appears: >>>>>>> >>>>>>> 1 INFO [PassThroughMessageProcessor-313] openjpa.Runtime - Starting >>>>>>> OpenJPA 2.4.0 org.apache.openjpa.persistence.ArgumentException: The >>>>>>> persistence provi der is attempting to use properties in the >>>>>>> persistence.xml file to resolve the data source. A Java Database >>>>>>> Connectivity (JDBC) driver or data source class name must be specified >>>>>>> in >>>>>>> the openjpa.ConnectionDriverName or javax.persistence.jdbc.driver >>>>>>> property. >>>>>>> The following properties are available in the configuration: >>>>>>> "org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@442ce698". >>>>>>> >>>>>>> In the persistence.xml, you have the following content : >>>>>>> >>>>>>> <?xml version="1.0" encoding="UTF-8"?> >>>>>>> <persistence version="2.0" xmlns="http://java.sun.com/xml >>>>>>> /ns/persistence" >>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>>>>> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence >>>>>>> http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> >>>>>>> <persistence-unit name="my-pu" transaction-type="RESOURCE_LOC >>>>>>> AL"> >>>>>>> <provider>org.apache.openjpa.persistence.PersistenceProvider >>>>>>> Impl</provider> >>>>>>> <jta-data-source>jdbc/MyDataSource</jta-data-source> >>>>>>> </persistence-unit> >>>>>>> </persistence> >>>>>>> >>>>>>> Is there some hidden magic to make it work? >>>>>>> >>>>>>> Thank you :) >>>>>>> >>>>>>> Regards, >>>>>>> >>>>>>> Thomas >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Dev mailing list >>>>>>> Dev@wso2.org >>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> *Kasun Gajasinghe*Associate Technical Lead, WSO2 Inc. >>>>>> email: kasung AT spamfree wso2.com >>>>>> linked-in: http://lk.linkedin.com/in/gajasinghe >>>>>> blog: http://kasunbg.org >>>>>> phone: +1 650-745-4499 <(650)%20745-4499>, 77 678 0813 >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> >>>> *Kasun Gajasinghe*Associate Technical Lead, WSO2 Inc. >>>> email: kasung AT spamfree wso2.com >>>> linked-in: http://lk.linkedin.com/in/gajasinghe >>>> blog: http://kasunbg.org >>>> phone: +1 650-745-4499 <(650)%20745-4499>, 77 678 0813 >>>> >>>> >>> >>> >> >> >> -- >> >> *Kasun Gajasinghe*Associate Technical Lead, WSO2 Inc. >> email: kasung AT spamfree wso2.com >> linked-in: http://lk.linkedin.com/in/gajasinghe >> blog: http://kasunbg.org >> phone: +1 650-745-4499 <(650)%20745-4499>, 77 678 0813 >> >> > > -- *Kasun Gajasinghe*Associate Technical Lead, WSO2 Inc. email: kasung AT spamfree wso2.com linked-in: http://lk.linkedin.com/in/gajasinghe blog: http://kasunbg.org phone: +1 650-745-4499, 77 678 0813
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev