On 13 November 2010 10:29, Stuart McCulloch <[email protected]> wrote:

> On 12 November 2010 09:30, Josh Kamau <[email protected]> wrote:
>
>> Hi there;
>>
>> Has anyone tried working with the wicket 1.5-m3 and the new guice/guice
>> persist 3 snapshots?
>>
>> am getting the below error:
>>
>
> Hi Josh,
>
> This stack suggests that Jetty is trying to create the Guice
> PersistFilter, which will fail because it's expecting to be created and
> injected by Guice (PersistFilter has no default constructor).
>
> You need to use the latest Guice servlet extension:
>
>   http://code.google.com/p/google-guice/wiki/Servlets
>
> which will automatically inject any filters and servlets that need
> injection (as long as you setup the top-level filter and add a servlet
> context listener to create the injector).
>

there's a short servlet + persist example at the end of the Guice JPA wiki
page:

   http://code.google.com/p/google-guice/wiki/JPA

adding the PersistFilter via the servlet module (instead of in web.xml)
enables the injection


> --
> Cheers, Stuart
>
>
>> java.lang.
>> InstantiationException: com.google.inject.persist.PersistFilter
>>     at java.lang.Class.newInstance0(Class.java:340)
>>     at java.lang.Class.newInstance(Class.java:308)
>>     at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
>>     at
>> org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:92)
>>     at
>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>>     at
>> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:662)
>>     at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
>>     at
>> org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1272)
>>     at
>> org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
>>     at
>> org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:489)
>>     at
>> org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:115)
>>     at
>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>>     at
>> org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
>>     at
>> org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
>>     at
>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>>     at
>> org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
>>     at
>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>>     at
>> org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
>>     at org.mortbay.jetty.Server.doStart(Server.java:224)
>>     at
>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>>     at
>> org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.java:132)
>>     at
>> org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:441)
>>     at
>> org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:383)
>>     at
>> org.mortbay.jetty.plugin.AbstractJettyRunMojo.execute(AbstractJettyRunMojo.java:210)
>>     at
>> org.mortbay.jetty.plugin.Jetty6RunMojo.execute(Jetty6RunMojo.java:184)
>>     at
>> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
>>     at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
>>     at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
>>     at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
>>     at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
>>     at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
>>     at
>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
>>     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
>>     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
>>     at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
>>     at
>> org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>     at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>     at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>     at java.lang.reflect.Method.invoke(Method.java:597)
>>     at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>>     at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>>     at
>> org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
>>     at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
>>
>> Web.xml
>> <?xml version="1.0" encoding="ISO-8859-1"?>
>> <web-app xmlns="http://java.sun.com/xml/ns/j2ee";
>>      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
>> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";
>>      version="2.4">
>>
>>     <display-name>issuetracker</display-name>
>>
>>     <filter>
>>         <filter-name>wicket.issuetracker</filter-name>
>>
>> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>>         <init-param>
>>             <param-name>applicationClassName</param-name>
>>
>> <param-value>ke.co.at.issuetracker.WicketApplication</param-value>
>>          </init-param>
>>      </filter>
>>
>>      <filter>
>>         <filter-name>persistFilter</filter-name>
>>
>> <filter-class>com.google.inject.persist.PersistFilter</filter-class>
>>     </filter>
>>
>>  <filter-mapping>
>>   <filter-name>wicket.issuetracker</filter-name>
>>     <url-pattern>/*</url-pattern>
>>  </filter-mapping>
>>
>>       <filter-mapping>
>>         <filter-name>persistFilter</filter-name>
>>         <url-pattern>/*</url-pattern>
>>     </filter-mapping>
>>
>>
>> </web-app>
>>
>> peristence.xml
>>
>> <persistence 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_1_0.xsd";
>>     version="1.0">
>>     <persistence-unit name="issuetrackerPU"
>>         transaction-type="RESOURCE_LOCAL">
>>         <properties>
>>             <property name="hibernate.dialect"
>>                 value="org.hibernate.dialect.PostgreSQLDialect" />
>>             <property name="hibernate.connection.driver_class"
>>                 value="org.postgresql.Driver" />
>>             <property name="hibernate.connection.username"
>> value="postgres" />
>>             <property name="hibernate.connection.password"
>> value="postgres" />
>>             <property name="hibernate.connection.url"
>>                 value="jdbc:postgresql://localhost:5432/issuetracker" />
>>             <property name="hibernate.hbm2ddl.auto" value="update" />
>>         </properties>
>>     </persistence-unit>
>>
>>     <persistence-unit name="issuetrackerPUtest"
>>         transaction-type="RESOURCE_LOCAL">
>>         <properties>
>>             <property name="hibernate.dialect"
>>                 value="org.hibernate.dialect.HSQLDialect" />
>>             <property name="hibernate.connection.driver_class"
>>                 value="org.hsqldb.jdbcDriver" />
>>             <property name="hibernate.connection.username" value="sa" />
>>             <property name="hibernate.connection.password" value="" />
>>             <property name="hibernate.connection.url"
>>                 value="jdbc:hsqldb:mem:issuetracker" />
>>             <property name="hibernate.hbm2ddl.auto" value="update" />
>>         </properties>
>>     </persistence-unit>
>>
>> </persistence>
>>
>>
>> Guice Module
>>
>> package ke.co.at.issuetracker;
>>
>> import ke.co.at.issuetracker.services.LoginService;
>> import ke.co.at.issuetracker.services.impl.LoginServiceImpl;
>>
>> import com.google.inject.AbstractModule;
>>
>> public class GuiceModule extends AbstractModule {
>>
>>     @Override
>>     protected void configure() {
>>         bind(LoginService.class).to(LoginServiceImpl.class);
>>     }
>>
>> }
>>
>> Wicket application
>>
>> package ke.co.at.issuetracker;
>>
>> import ke.co.at.issuetracker.pages.AdminUserPage;
>> import ke.co.at.issuetracker.pages.LoginPage;
>>
>> import org.apache.wicket.guice.GuiceComponentInjector;
>> import org.apache.wicket.protocol.http.WebApplication;
>>
>> import com.google.inject.Guice;
>> import com.google.inject.Injector;
>> import com.google.inject.persist.jpa.JpaPersistModule;
>>
>> /**
>>  * Application object for your web application. If you want to run this
>>  * application without deploying, run the Start class.
>>  *
>>  * @see ke.co.at.issuetracker.Start#main(String[])
>>  */
>> public class WicketApplication extends WebApplication {
>>     /**
>>      * Constructor
>>      */
>>     public WicketApplication() {
>>     }
>>
>>     /**
>>      * @see org.apache.wicket.Application#getHomePage()
>>      */
>>     public Class<LoginPage> getHomePage() {
>>         return LoginPage.class;
>>     }
>>
>>     @Override
>>     protected void init() {
>>         super.init();
>>         Injector injector = Guice.createInjector(new GuiceModule(), new
>> JpaPersistModule("issuetrackerPU"));
>>         getComponentInstantiationListeners().add(new
>> GuiceComponentInjector(this, injector));
>>
>>         getMarkupSettings().setStripWicketTags(true);
>>
>>         mountPage("/login", LoginPage.class);
>>         mountPage("/registeradmin", AdminUserPage.class);
>>     }
>>
>> }
>>
>> kind regards.
>> Josh
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "google-guice" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<google-guice%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/google-guice?hl=en.
>>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to