Hi,

I've been looking more into Spring Boot, and I've converted the standard
jsf guessNumber example to use it.

The trick is that spring-boot needs a patch to make jetty work correctly
with jsp/jstl etc. Here's a link to the relevant pull request:
https://github.com/spring-projects/spring-boot/pull/5290

Having locally built spring-boot with this patch, everything started to
work (using jetty-9.2.x).

I'm attaching the guessNumber-springboot example project, so you can see
what I did to make jsf work. I should point out that I based some of this
on: https://github.com/stephanrauh/JSF-on-Spring-Boot

Jan


On 30 March 2016 at 07:21, Bjørn T Johansen <[email protected]> wrote:

> Thx! Lot of info here, will have a look... :)
>
> BTJ
>
> On 29.03.2016 08:35, Jan Bartel wrote:
>
> I can't see anything particularly wrong with the dependencies, except you
> need to remove com.sun.el:el-ri:1.0.
>
> I'm attaching a very small example project, which is the standard jsf
> guessNumber webapp, configured to run with the jetty maven plugin.  The
> only trick to getting this to work is to ensure that:
>
> 1. the jsf jars are on the container classpath and not the webapp
> classpath (in this case this is achieved by adding the jsf jars to the
> plugin dependencies)
> 2. the jsf jars are scanned by jetty (this is achieved by the
> configuration element
> <containerIncludeJarPattern>.*/jsf-[^/]*\.jar$</containerIncludeJarPattern>
>
> Point 2 above is actually a jetty maven plugin specific way of telling
> jetty that there are some jars that need scanning for tlds etc.
>
> If you're not using the maven plugin, then the way to do it is to set up a
> context attribute called
> "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern" to some
> regexps that match the names of the jars that need scanning. In the jetty
> distro, the pattern in the etc/jetty-deploy.xml file is:
> .*/[^/]*servlet-api-[^/]*\.jar$|.*/javax.servlet.jsp.jstl-.*\.jar$|.*/org.apache.taglibs.taglibs-standard-impl-.*\.jar$
>
> So to add in the pattern for jsf, the full final pattern would be:
>
> .*/jsf-[^/]*\.jar$|
> .*/[^/]*servlet-api-[^/]*\.jar$|.*/javax.servlet.jsp.jstl-.*\.jar$|.*/org.apache.taglibs.taglibs-standard-impl-.*\.jar$
>
> Note that if you need to set this pattern in code instead, you'd need to
> escape the backslashes like so:
>
> webappContext.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",
>
>                            ".*/jsf-[^/]*\\.jar$|
> .*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/org.apache.taglibs.taglibs-standard-impl-.*\\.jar$");
>
> Try playing around with the guessNumber example to make it more like your
> setup. My guess is that the jsf jars just aren't being initialized
> correctly, most probably because they're not being scanned, hence the need
> for the org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern
> attribute.
>
> You can also turn on debug logging for annotations
> (org.eclipse.jetty.annotations.LEVEL=DEBUG if using standard jetty logging)
> and verify that you see the jsf jars being included for scanning. You
> should see lines like:
>
> Scanning jar [path to]/jsf-impl-2.2.13.jar
>
> Jan
>
>
> On 27 March 2016 at 23:42, Bjørn T Johansen <[email protected]> wrote:
>
>> Checked my dependencies but I can not find anything strange but perhaps
>> you guys can, I have included the dependencies as a attachment...
>>
>> BTJ
>>
>> On Sun, 27 Mar 2016 15:30:55 +1100
>> Jan Bartel <[email protected]> wrote:
>>
>> > I don't think your list of dependencies can be correct yet - something
>> must
>> > be transitively including older versions. The org.mortbay.jasper jars
>> are
>> > based on Apache's jasper that implement jsp version 2.3.
>> >
>> > I think to get any further with this you are going to have to post a
>> full
>> > list of your dependencies (including the jetty jars) and any config you
>> > pass in to spring boot so we can see what jars are on the classpath.
>> >
>> > regards
>> > Jan
>> >
>> > On 26 March 2016 at 21:30, Bjørn T Johansen <[email protected]> wrote:
>> >
>> > > Well, I do not actually use jsp but I think JSF is pulling in this.
>> If I
>> > > remove the jsp jars, I get the following exception:
>> > >
>> > > java.lang.ClassNotFoundException: javax.servlet.jsp.JspFactory
>> > >
>> > > What's the best way to get rid of this when running Jetty? (When
>> running
>> > > Tomcat, I have to include
>> org.apache.tomcat.embed:tomcat-embed-jasper).
>> > >
>> > >
>> > > I also get this when compiling:
>> > >
>> > > Error:(129, 70) java: cannot access javax.el.ELException
>> > >   class file for javax.el.ELException not found
>> > >
>> > > That's why I have included org.glassfish.web:el-impl:2.2
>> > >
>> > >
>> > > And I tried to use the jars you listed but then I get the following
>> > > exception:
>> > >
>> > > caused by: com.sun.faces.config.ConfigurationException: It appears
>> the JSP
>> > > version of the container is older than 2.1 and unable to locate the
>> EL RI
>> > > expression factory, com.sun.el.ExpressionFactoryImpl.  If not using
>> JSP or
>> > > the EL RI, make sure the context initialization parameter,
>> > > com.sun.faces.expressionFactory, is properly set. at
>> > >
>> > >
>> com.sun.faces.config.ConfigureListener.registerELResolverAndListenerWithJsp(ConfigureListener.java:694)
>> > >
>> > >
>> > > I solved this by adding com.sun.el:el-ri:1.0 and now it compiles
>> again and
>> > > runs but I still get the same message in the log.
>> > >
>> > >
>> > > BTJ
>> > >
>> > >
>> > > On Sat, 26 Mar 2016 10:47:19 +1100
>> > > Jan Bartel <[email protected]> wrote:
>> > >
>> > > > Bjørn,
>> > > >
>> > > > I would recommend that you use the jsp jars that we distribute with
>> > > jetty.
>> > > > You'll need these dependencies:
>> > > >
>> > > > for jsp:
>> > > > org.eclipse.jetty:apache-jsp:jar:<version of jetty you're using>
>> > > >  javax.servlet:javax.servlet-api:jar:3.1.0
>> > > > org.mortbay.jasper:apache-jsp:jar:8.0.27
>> > > > org.mortbay.jasper:apache-el:jar:8.0.27
>> > > > org.eclipse.jdt.core.compiler:ecj:jar:4.4.2
>> > > >
>> > > > for jstl:
>> > > > org.apache.taglibs:taglibs-standard-spec:jar:1.2.5
>> > > > org.apache.taglibs:taglibs-standard-impl:jar:1.2.5
>> > > >
>> > > > Also have a read of the jetty page about jsp and follow the links to
>> > > > embedded examples:
>> > > >
>> > >
>> http://www.eclipse.org/jetty/documentation/9.3.0.v20150612/configuring-jsp.html
>> > > >
>> > > > Jan
>> > > >
>> > > > On 26 March 2016 at 07:42, Bjørn T Johansen <[email protected]> wrote:
>> > > >
>> > > > > Hi.
>> > > > >
>> > > > > I am trying to switch my Spring Boot, with JSF 2.2, projects from
>> using
>> > > > > embedded Tomcat to using embedded Jetty and I seems to have it
>> working
>> > > now,
>> > > > > just one annoying log message in the log that I can not seem to
>> get
>> > > rid of:
>> > > > >
>> > > > > JSF1027: [null] The ELResolvers for JSF were not registered with
>> the
>> > > JSP
>> > > > > container.
>> > > > >
>> > > > >
>> > > > > My dependencies looks like this:
>> > > > >
>> > > > > dependencies {
>> > > > >
>>  compile('org.springframework.boot:spring-boot-starter-actuator')
>> > > > >     compile('org.springframework.boot:spring-boot-starter-jdbc') {
>> > > > >         exclude group: 'org.apache.tomcat' , module: 'tomcat-jdbc'
>> > > > >     }
>> > > > >     compile('org.projectlombok:lombok:1.16.6')
>> > > > >     compile('org.springframework.boot:spring-boot-starter-mail')
>> > > > >
>>  compile('org.springframework.boot:spring-boot-starter-security')
>> > > > >     compile('org.springframework.boot:spring-boot-starter-web') {
>> > > > >         exclude module: 'spring-boot-starter-tomcat'
>> > > > >         exclude module: 'spring-boot-starter-validation'
>> > > > >         exclude group: 'org.apache.tomcat:embed' , module:
>> > > > > 'tomcat-embed-el'
>> > > > >     }
>> > > > >     compile('org.springframework.boot:spring-boot-starter-jetty')
>> > > > >     compile('com.zaxxer:HikariCP:2.4.5')
>> > > > >     compile "org.primefaces:primefaces:$primefaces"
>> > > > >     compile 'com.google.code.gson:gson:2.6.2'
>> > > > >     compile 'org.apache.commons:commons-lang3:3.3.2'
>> > > > >     compile "com.sun.faces:jsf-api:$jsf"
>> > > > >     compile "com.sun.faces:jsf-impl:$jsf"
>> > > > >     compile "org.jasypt:jasypt:$jasypt"
>> > > > >     compile "org.jasypt:jasypt-springsecurity3:$jasypt"
>> > > > >     compile "org.jasypt:jasypt-spring31:$jasypt"
>> > > > >     compile 'joda-time:joda-time:2.9.2'
>> > > > >     compile 'com.google.guava:guava:19.0'
>> > > > >     compile('javax.servlet:jsp-api:2.0')
>> > > > >     compile('javax.servlet:javax.servlet-api:3.1.0')
>> > > > >     compile('org.glassfish.web:el-impl:2.2')
>> > > > >     runtime('org.postgresql:postgresql:9.4.1208')
>> > > > > }
>> > > > >
>> > > > >
>> > > > > First, is this a correct configured Jetty project? Also, what is
>> > > missing,
>> > > > > can I get rid of that log message or can I just ignore it?
>> > > > >
>> > > > >
>> > > > > Regards,
>> > > > >
>> > > > > BTJ
>> > > > >
>> > > > > --
>> > > > >
>> > > > >
>> > >
>> -----------------------------------------------------------------------------------------------
>> > > > > Bjørn T Johansen
>> > > > >
>> > > > > [email protected]
>> > > > >
>> > > > >
>> > >
>> -----------------------------------------------------------------------------------------------
>> > > > > Someone wrote:
>> > > > > "I understand that if you play a Windows CD backwards you hear
>> strange
>> > > > > Satanic messages"
>> > > > > To which someone replied:
>> > > > > "It's even worse than that; play it forwards and it installs
>> Windows"
>> > > > >
>> > > > >
>> > >
>> -----------------------------------------------------------------------------------------------
>> > > > > _______________________________________________
>> > > > > jetty-users mailing list
>> > > > > [email protected]
>> > > > > To change your delivery options, retrieve your password, or
>> unsubscribe
>> > > > > from this list, visit
>> > > > > https://dev.eclipse.org/mailman/listinfo/jetty-users
>> > > >
>> > > >
>> > > >
>> > > >
>> > > _______________________________________________
>> > > jetty-users mailing list
>> > > [email protected]
>> > > To change your delivery options, retrieve your password, or
>> unsubscribe
>> > > from this list, visit
>> > > https://dev.eclipse.org/mailman/listinfo/jetty-users
>> > >
>> >
>> >
>> >
>>
>> _______________________________________________
>> jetty-users mailing list
>> [email protected]
>> To change your delivery options, retrieve your password, or unsubscribe
>> from this list, visit
>> https://dev.eclipse.org/mailman/listinfo/jetty-users
>
>
>
>
> --
> Jan Bartel <[email protected]>
> www.webtide.com
> *Expert assistance from the creators of Jetty and CometD*
>
>
> _______________________________________________
> jetty-users mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/jetty-users
>
>
>
> _______________________________________________
> jetty-users mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/jetty-users
>



-- 
Jan Bartel <[email protected]>
www.webtide.com
*Expert assistance from the creators of Jetty and CometD*

Attachment: guessNumber-springboot.tar
Description: Unix tar archive

_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to