I don't know postgres much, but I know there is a sample called daytrader which support multiple databases, which includes postgres, you can refer to a released one for example.
http://svn.apache.org/repos/asf/geronimo/daytrader/tags/daytrader-3.0-beta-1/ On Fri, Apr 20, 2012 at 3:17 PM, Michael Chau <[email protected]> wrote: > Thanks, Forrest. I am using the Ration OSGi tool. I somehow forgot to > check the box to compile the servlet class into the WEB-INF/classes folder. > > Now, I'm trying to figure out how to write to a Postgres db using jdbc. I > haven't been able to find any good examples. Can you point me to one or > give me some tips on how to go about it? > > Once again, thanks for the help. > > michael > > On Apr 19, 2012, at 9:24 PM, Forrest Xia wrote: > > Two points here: > 1. What tools you used to genereate this eba? if using eclipse, sugguest > you use Rational development tools for OSGi application[1] > 2. Your sample's web module sample-web_xxx.jar file structure is not > correct, you should put your servlet class into WEB-INF/classes folder > > [1] > http://www.ibm.com/developerworks/rational/downloads/10/rationaldevtoolsforosgiapplications.html > > Attached an updated sample for your reference. > > On Thu, Apr 19, 2012 at 12:42 PM, Michael Chau <[email protected]> wrote: > >> Sorry, I misunderstood you. Here it is: >> >> >> >> On Apr 19, 2012, at 12:41 AM, Forrest Xia wrote: >> >> Finding the potential error via "SEE" through the text is hard work for >> me :) >> >> Can you just attach your eba here? so that I can quickly have a local try >> with your eba. >> >> On Thu, Apr 19, 2012 at 1:07 PM, Michael Chau <[email protected]> wrote: >> >>> Thanks for helping me. I'm new to OSGi. Here are my configs and code. >>> >>> SampleApp >>> APPLICATION.MF >>> >>> Application-Name: sample-app >>> Application-SymbolicName: sample-app >>> Application-ManifestVersion: 1.0 >>> Application-Version: 1.0.0.qualifier >>> Application-Content: sample-api;version="1.0.0", >>> sample-server;version="1.0.0", >>> sample-web;version="1.0.0" >>> Manifest-Version: 1.0 >>> >>> SampleApi >>> >>> Manifest-Version: 1.0 >>> Bundle-ManifestVersion: 2 >>> Bundle-Name: sample-api >>> Bundle-SymbolicName: sample-api >>> Bundle-Version: 1.0.0.qualifier >>> Bundle-RequiredExecutionEnvironment: JavaSE-1.6 >>> Export-Package: com.sample.api >>> >>> >>> package com.sample.api; >>> >>> public interface SampleService { >>> public String sayHello(String name); >>> } >>> >>> >>> SampleServer >>> >>> Manifest-Version: 1.0 >>> Bundle-Blueprint: OSGI-INF/blueprint/*.xml >>> Bundle-Version: 1.0.0.qualifier >>> Bundle-Name: sample-server >>> Bundle-ManifestVersion: 2 >>> Import-Package: com.sample.api >>> Bundle-SymbolicName: sample-server >>> Bundle-RequiredExecutionEnvironment: JavaSE-1.6 >>> Export-Package: com.sample.server >>> >>> Source: >>> package com.sample.server; >>> >>> import com.sample.api.SampleService; >>> >>> public class SampleServiceImpl implements SampleService { >>> >>> public String sayHello(String name) { >>> // TODO Auto-generated method stub >>> return "Hello "+name; >>> } >>> >>> } >>> >>> **** Blueprint.xml >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> >>> <bean id="serviceBean" class="com.sample.server.SampleServiceImpl"/> >>> >>> <service ref="serviceBean" interface="com.sample.api.SampleService" >>> /> >>> >>> </blueprint> >>> >>> SampleWeb >>> >>> Manifest-Version: 1.0 >>> Bundle-ManifestVersion: 2 >>> Bundle-Name: sample-web >>> Bundle-SymbolicName: sample-web >>> Bundle-Version: 1.0.0.qualifier >>> Bundle-ClassPath: WEB-INF/classes >>> Web-ContextPath: /sample-web >>> Import-Package: com.sample.api, >>> javax.naming, >>> javax.servlet;version="2.5", >>> javax.servlet.http;version="2.5" >>> Bundle-RequiredExecutionEnvironment: JavaSE-1.6 >>> Export-Package: com.sample.client.web >>> >>> >>> package com.sample.client.web; >>> >>> import java.io.IOException; >>> >>> import javax.naming.InitialContext; >>> import javax.naming.NamingException; >>> import javax.servlet.ServletException; >>> import javax.servlet.http.HttpServlet; >>> import javax.servlet.http.HttpServletRequest; >>> import javax.servlet.http.HttpServletResponse; >>> >>> import com.sample.api.SampleService; >>> >>> /** >>> * Servlet implementation class SampleServlet >>> */ >>> public class SampleServlet extends HttpServlet { >>> private static final long serialVersionUID = 1L; >>> >>> /** >>> * @see HttpServlet#HttpServlet() >>> */ >>> public SampleServlet() { >>> super(); >>> // TODO Auto-generated constructor stub >>> } >>> >>> /** >>> * @see HttpServlet#doGet(HttpServletRequest request, >>> HttpServletResponse response) >>> */ >>> protected void doGet(HttpServletRequest request, HttpServletResponse >>> response) throws ServletException, IOException { >>> // TODO Auto-generated method stub >>> SampleService sample = null; >>> try { >>> InitialContext ic = new InitialContext(); >>> sample = (SampleService) ic.lookup("osgi:service/" + >>> SampleService.class.getName()); >>> response.getOutputStream().println("**** " + sample.sayHello("Sample >>> Service")); >>> } >>> catch (NamingException e) { >>> e.printStackTrace(System.out); >>> } >>> } >>> >>> /** >>> * @see HttpServlet#doPost(HttpServletRequest request, >>> HttpServletResponse response) >>> */ >>> protected void doPost(HttpServletRequest request, HttpServletResponse >>> response) throws ServletException, IOException { >>> // TODO Auto-generated method stub >>> } >>> >>> } >>> >>> **** web.xml >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns=" >>> http://java.sun.com/xml/ns/javaee" xmlns:web=" >>> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation=" >>> http://java.sun.com/xml/ns/javaee >>> http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" >>> version="3.0"> >>> <display-name>sample-web</display-name> >>> <servlet> >>> <display-name>SampleServlet</display-name> >>> <servlet-name>SampleServlet</servlet-name> >>> <servlet-class>com.sample.client.web.SampleServlet</servlet-class> >>> </servlet> >>> <servlet-mapping> >>> <servlet-name>SampleServlet</servlet-name> >>> <url-pattern>/sample</url-pattern> >>> </servlet-mapping> >>> <welcome-file-list> >>> <welcome-file>index.html</welcome-file> >>> <welcome-file>index.htm</welcome-file> >>> <welcome-file>index.jsp</welcome-file> >>> <welcome-file>default.html</welcome-file> >>> <welcome-file>default.htm</welcome-file> >>> <welcome-file>default.jsp</welcome-file> >>> </welcome-file-list> >>> </web-app> >>> >>> >>> >>> On Apr 18, 2012, at 8:44 PM, Forrest Xia wrote: >>> >>> Can you attach your sample here for a check? >>> >>> On Thu, Apr 19, 2012 at 12:43 AM, Michael Chau <[email protected]>wrote: >>> >>>> I have my SampleApi (interface) exported it. I don't believe I'm >>>> suppose to export the implementation (SampleServer) and web bundle(Sample >>>> Web). But, i just tried exporting them both just to see if it will work >>>> and I'm still getting the same error. I'm somewhat following the >>>> CounterApp example. My web bundle is pretty much the same as the >>>> CounterWebBundle (same required import packages and no exports). >>>> >>>> >>>> On Apr 18, 2012, at 12:55 AM, Forrest Xia wrote: >>>> >>>> Have you exported your application classes in Export-Package of >>>> MANIFEST.MF? >>>> >>>> On Wed, Apr 18, 2012 at 3:42 AM, Michael Chau <[email protected]>wrote: >>>> >>>>> Thanks, Ivan. >>>>> >>>>> I added the javax.naming to the import and now getting this error: >>>>> >>>>> 2012-04-18 00:40:53,484 ERROR [WebApplication] Unable to start web >>>>> application for bundle sample-web >>>>> org.apache.geronimo.common.DeploymentException: Fail to load servlet >>>>> class >>>>> at >>>>> org.apache.geronimo.web25.deployment.merge.annotation.ServletSecurityAnnotationMergeHandler.postProcessWebXmlElement( >>>>> ServletSecurityAnnotationMergeHandler.java:79) >>>>> at >>>>> org.apache.geronimo.web25.deployment.merge.MergeHelper.processWebFragmentsAndAnnotations( >>>>> MergeHelper.java:418) >>>>> at >>>>> org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.basicInitContext( >>>>> AbstractWebModuleBuilder.java:493) >>>>> at >>>>> org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.initContext( >>>>> AbstractWebModuleBuilder.java:436) >>>>> at org.apache.geronimo.osgi.web.extender.WebApplication.doRun( >>>>> WebApplication.java:213) >>>>> at org.apache.geronimo.osgi.web.extender.WebApplication.run( >>>>> WebApplication.java:125) >>>>> at java.util.concurrent.Executors$RunnableAdapter.call( >>>>> Executors.java:441) >>>>> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) >>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:138) >>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask( >>>>> ThreadPoolExecutor.java:886) >>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run( >>>>> ThreadPoolExecutor.java:908) >>>>> at java.lang.Thread.run(Thread.java:680) >>>>> Caused by: java.lang.ClassNotFoundException: >>>>> com.sample.client.web.SampleServlet >>>>> at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal( >>>>> BundleLoader.java:513) >>>>> at org.eclipse.osgi.internal.loader.BundleLoader.findClass( >>>>> BundleLoader.java:429) >>>>> at org.eclipse.osgi.internal.loader.BundleLoader.findClass( >>>>> BundleLoader.java:417) >>>>> at org.apache.geronimo.hook.equinox.GeronimoClassLoader.loadClass( >>>>> GeronimoClassLoader.java:85) >>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:247) >>>>> at org.eclipse.osgi.internal.loader.BundleLoader.loadClass( >>>>> BundleLoader.java:345) >>>>> at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass( >>>>> BundleHost.java:229) >>>>> at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass( >>>>> AbstractBundle.java:1207) >>>>> at >>>>> org.apache.geronimo.web25.deployment.merge.annotation.ServletSecurityAnnotationMergeHandler.postProcessWebXmlElement( >>>>> ServletSecurityAnnotationMergeHandler.java:52) >>>>> ... 11 more >>>>> >>>>> >>>>> On Apr 17, 2012, at 11:09 PM, Ivan wrote: >>>>> >>>>> From the log files, it seems that javax.naming should be added in the >>>>> import-package list for the wab ? >>>>> >>>>> 2012/4/18 Michael Chau <[email protected]> >>>>> >>>>>> I've created a SampleApi(interface), SampleServer(implementation) and >>>>>> SampleWeb(servlet) bundles. It's using Blueprint. I ran it in the >>>>>> Apache >>>>>> Aries container and it was fine. I tried to run it in Geronimo and got >>>>>> >>>>>> 2012-04-17 14:44:52,759 ERROR [WebApplication] Unable to start web >>>>>> application for bundle sample-web >>>>>> java.lang.NoClassDefFoundError: Could not fully load class: >>>>>> com.sample.client.web.SampleServlet >>>>>> due to:javax/naming/NamingException >>>>>> in classLoader: >>>>>> org.apache.geronimo.hook.equinox.GeronimoClassLoader@10993991 >>>>>> at org.apache.xbean.finder.ClassFinder.<init>(ClassFinder.java:136) >>>>>> at >>>>>> org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.createWebAppClassFinder( >>>>>> AbstractWebModuleBuilder.java:663) >>>>>> at >>>>>> org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.configureBasicWebModuleAttributes( >>>>>> AbstractWebModuleBuilder.java:698) >>>>>> at >>>>>> org.apache.geronimo.tomcat.deployment.TomcatModuleBuilder.addGBeans( >>>>>> TomcatModuleBuilder.java:483) >>>>>> at org.apache.geronimo.osgi.web.extender.WebApplication.doRun( >>>>>> WebApplication.java:218) >>>>>> at org.apache.geronimo.osgi.web.extender.WebApplication.run( >>>>>> WebApplication.java:125) >>>>>> at java.util.concurrent.Executors$RunnableAdapter.call( >>>>>> Executors.java:441) >>>>>> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303 >>>>>> ) >>>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:138) >>>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask( >>>>>> ThreadPoolExecutor.java:886) >>>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run( >>>>>> ThreadPoolExecutor.java:908) >>>>>> at java.lang.Thread.run(Thread.java:680) >>>>>> >>>>>> Any help is appreciated. >>>>>> >>>>>> Michael >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Ivan >>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Thanks! >>>> >>>> Regards, Forrest >>>> >>>> >>>> >>> >>> >>> -- >>> Thanks! >>> >>> Regards, Forrest >>> >>> >>> >> >> >> -- >> Thanks! >> >> Regards, Forrest >> >> >> >> > > > -- > Thanks! > > Regards, Forrest > > <sample-app2.eba> > > > -- Thanks! Regards, Forrest
