Please also take geronimo-5879 as a reference : https://issues.apache.org/jira/browse/GERONIMO-5879
On Sat, Apr 21, 2012 at 9:39 AM, Forrest Xia <forres...@gmail.com> wrote: > 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 <mtqc2...@yahoo.com> 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 <mtqc2...@yahoo.com> 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 <mtqc2...@yahoo.com> 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 <mtqc2...@yahoo.com> >>>> 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 <mtqc2...@yahoo.com> >>>>> 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 <mcha...@gmail.com> >>>>>>> >>>>>>> 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 > -- Best Wishes! Tina Li