Hi,

The problem had nothing to do with lack of a context path. I had a dependency conflict between servlet-api 2.5 (dependency of axis2) and servlet-api 3.x (dependency of org.apache.isis.WebServer).

The application is running now but I still have some troubles.

I've got some Wicket problems running the app from IntelliJ with WebServer class I get the following error:

org.apache.wicket.markup.MarkupNotFoundException: Failed to find markup file associated. SearchBarPanel: [SearchBarPanel [Component id = searchBar]] at org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy.getMarkup(AssociatedMarkupSourcingStrategy.java:97) at org.apache.wicket.MarkupContainer.getMarkup(MarkupContainer.java:451)
    at org.apache.wicket.Component.getMarkup(Component.java:756)
at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.getMarkup(DefaultMarkupSourcingStrategy.java:82) at org.apache.wicket.MarkupContainer.getMarkup(MarkupContainer.java:451)
    at org.apache.wicket.Component.getMarkup(Component.java:756)

I couldn't get the app running from Eclipse using the launch files and WebServer-class because 'class org.apache.isis.WebServer is not found'. So I don't know if it's an issue of using IntelliJ (configuration needed?). It looks like (using IntelliJ) the resources from the webapp are not loaded: I also get a 404 on some css-file for a custom wicket-page in the same app (that has nothing to do with Apache Isis).

I've also noticed that injected services are sometimes not injected so calls for these services result in nullpointer exceptions. Adding some service to the AppManifest did help at some point but at others the same service wasn't injected.

I will check the documentation again for setting up a project in IntelliJ but may be you can give me some hints for solving this.

Thanks,
Erik


On 05/02/2016 01:48 PM, Erik de Hair wrote:
Hi Dan,

While trying to create a simple app I found out the problem was in my code. I had a method with @PostConstruct where a field (with @Injected) being called was null. Shouldn't an injected field be set before the PostConstruct-method is called?

I can go on for now because I solved this in another way.

But now I've got another problem. I'm running the app in prototyping mode using WebServer-class. It starts without context-path set and I can't open any page. Should the context path be configured somewhere?

Erik

On 04/29/2016 04:11 PM, Dan Haywood wrote:
Bit difficult to say without seeing the reason for the NullPointerException.

You might want to use the current simpleapp archetype to generate a blank
webapp, and then do a merge over.  Steve Cameron did something similar
recently, didn't seem to take him long...



On 29 April 2016 at 14:53, Erik de Hair <[email protected]> wrote:

Hi Dan,

On 04/29/2016 03:35 PM, Dan Haywood wrote:

remove the line:

bind(AppManifest.class).to(PortalModuleAppManifest.class);

from the PortalApplication... I think the error says its already
configured, probably because the isis.appManifest property is set in
isis.properties (or equivalently specified as -m flag to o.a.i.WebServer).

If that's the case, it might be a documentation issue that needs fixing.

Removing the line and setting the manifest property in isis.properties
does work but now I get another exception:

15:50:23,239  [IsisWicketApplication main       ERROR]  Failed to
initialize
com.google.inject.ProvisionException: Unable to provision, see the
following errors:

1) Error in custom provider,
org.apache.isis.core.runtime.system.transaction.IsisTransactionManagerException:
java.lang.NullPointerException
   at
org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSystem(IsisInjectModule.java:127)
   at
org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSystem(IsisInjectModule.java:127)
   while locating org.apache.isis.core.runtime.system.IsisSystem
     for field at
org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.isisSystem(IsisWicketApplication.java:149)
   while locating webapp.PortalApplication

1 error
     at
com.google.inject.internal.Errors.throwProvisionExceptionIfErrorsExist(Errors.java:482)
     at
com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:67)
     at
com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:984)
     at
org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.init(IsisWicketApplication.java:264)
     at webapp.PortalApplication.init(PortalApplication.java:102)


let me know...

Dan


On 29 April 2016 at 14:31, Erik de Hair <[email protected]> wrote:

Hi,
When trying to run our application with org.apache.isis.WebServer using
an
AppManifest I get the following error:

15:07:14,497  [IsisWicketApplication main       ERROR] Failed to
initialize
com.google.inject.CreationException: Unable to create injector, see the
following errors:

1) A binding to org.apache.isis.applib.AppManifest was already configured
at

org.apache.isis.core.runtime.runner.IsisInjectModule.configure(IsisInjectModule.java:107). at webapp.PortalApplication$1.configure(PortalApplication.java:94)
(via
modules: com.google.inject.util.Modules$OverrideModule ->
webapp.PortalApplication$1)

1 error
      at

com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:466)
      at

com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:155)
      at

com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
      at com.google.inject.Guice.createInjector(Guice.java:96)
      at com.google.inject.Guice.createInjector(Guice.java:73)
      at com.google.inject.Guice.createInjector(Guice.java:62)
      at

org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.init(IsisWicketApplication.java:262)
      at webapp.PortalApplication.init(PortalApplication.java:104)
      at
org.apache.wicket.Application.initApplication(Application.java:823)


ThenewIsisWicketModule-method of our PortalApplication:

@Override
protectedModule newIsisWicketModule()
{
     finalModule isisDefaults =super.newIsisWicketModule();

     finalModule resellerPortalOverrides =newAbstractModule()
     {
        @Override
        protected voidconfigure()
        {
bind(PageClassList.class).to(PortalPageClassList.class);


bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("ITCO
Portal");


bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css");


bind(String.class).annotatedWith(Names.named("applicationJs")).toInstance("scripts/application.js");


bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines("welcome.html"));


bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance(readLines("about.html"));


bind(String.class).annotatedWith(Names.named("brandLogoHeader")).toInstance("/portal/images/Pocos-Logo-Powering-portal.png");


bind(String.class).annotatedWith(Names.named("brandLogoSignin")).toInstance("/portal/images/Pocos-Logo-Powering-portal.png");


bind(InputStream.class).annotatedWith(Names.named("metaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF")));


bind(ComponentFactoryRegistrar.class).to(PortalComponentFactoryRegistrar.class);
bind(AppManifest.class).to(PortalModuleAppManifest.class);
        }
     };

returnModules.override(isisDefaults).with(resellerPortalOverrides);
}

Did I forget something?

Erik






Reply via email to