Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Jsp configuration class

Som,

we are not responsible for the Heroku archetypes, but that main class looks reasonable.  
With jetty-11, all that is necessary to enable JSPs is to put the jetty-jsp jar on the classpath and it will be discovered and available to the webapp.



On Fri, 2 Apr 2021 at 13:08, Som Lima <somplasticllc@xxxxxxxxx> wrote:
Hi,

using Heroku archetype jetty 11,
It appeared the jetty configurations may be different
when running mvn jetty:run  compared to running 
embedded jetty using the main class. (below)
That is to say I would need to add further programmatic configuration to the embedded jetty.

/**
 *  This class launches the web application in an embedded Jetty container.
 *  This is the entry point to your application. The Java
 *  command that is used for launching should fire this main method.
 */
public class Main {

    public static void main(String[] args) throws Exception{
        // The port that we should run on can be set into an environment variable
        // Look for that variable and default to 8080 if it isn't there.
        String webPort = System.getenv("PORT");
        if (webPort == null || webPort.isEmpty()) {
            webPort = "8080";
        }

        final Server server = new Server(Integer.valueOf(webPort));
        final WebAppContext root = new WebAppContext();

        root.setContextPath("/");
        // Parent loader priority is a class loader setting that Jetty accepts.
        // By default Jetty will behave like most web containers in that it will
        // allow your application to replace non-server libraries that are part of the
        // container. Setting parent loader priority to true changes this behavior.
        // Read more here: http://wiki.eclipse.org/Jetty/Reference/Jetty_Classloading
        root.setParentLoaderPriority(true);

        final String webappDirLocation = "src/main/webapp/";
        root.setDescriptor(webappDirLocation + "/WEB-INF/web.xml");
        root.setResourceBase(webappDirLocation);

        server.setHandler(root);

        server.start();
        server.join();
    }
}


On Thu, 1 Apr 2021, 22:14 Greg Wilkins, <gregw@xxxxxxxxxxx> wrote:
Som,

Configuration.ClassList is from Jetty-9 and is no longer needed in Jetty 10 or 11.
The Configuraition mechanism generally requires less classpath manipulation in 10 or 11, so I'd try just deleting that line.   Do you know why you are trying to obtain a classlist ?

Perhaps look for the corresponding example in the jetty 11 source code?


On Tue, 30 Mar 2021 at 23:36, Som Lima <somplasticllc@xxxxxxxxx> wrote:
I was hoping for some feedback  on the error. 

        Configuration.ClassList classlist = Configuration.ClassList
            .setServerDefault(server);

Multiple markers at this line
- ClassList cannot be resolved or is not a field
- Configuration.ClassList cannot be resolved to a
type

I think was due to  an incompatible server object.


Whether my guess was correct or not  ?



On Fri, 26 Mar 2021, 23:49 Som Lima, <somplasticllc@xxxxxxxxx> wrote:
Problem version 

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<inherited>true</inherited>
<configuration>
<source>11</source>
<target>11</target>
</configuration>


<jetty.version>11.0.1</jetty.version>


On Fri, 26 Mar 2021, 23:45 Som Lima, <somplasticllc@xxxxxxxxx> wrote:
Now
    <jetty.version>9.4.35.v20201120</jetty.version>
on
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>


On Fri, 26 Mar 2021, 23:40 Joakim Erdfelt, <joakim@xxxxxxxxxxx> wrote:
What version of Jetty are you using?

Joakim Erdfelt / joakim@xxxxxxxxxxx


On Fri, Mar 26, 2021 at 6:34 PM Som Lima <somplasticllc@xxxxxxxxx> wrote:
Hi Thanks,

I did try this Configuration.ClassList approach earlier  but I was getting an error "
Multiple markers at this line
- ClassList cannot be resolved or is not a field
- Configuration.ClassList cannot be resolved to a
type

I think was due to  an incompatible server object.

I am working in another project now
this time I inserted the code ,  no eclipse IDE errors reported I guess the server object is compatible.
My code looks like this but still I am missing JSP feature. Not sure the syntax for that.
console error message"  No JSP support.  Check that JSP jars are in lib/jsp and that the JSP option has been specified to start."

I have these two dependencies in pom.xml

<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jsp</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

This is what my code looks like but I don't think I have the jsp configuration in either  variations

       context.setBaseResource(Resource.newResource(webResourceBase));
        context.setConfigurations(new Configuration[]
        {
            new AnnotationConfiguration(),
            new WebInfConfiguration(),
            new WebXmlConfiguration(),
            new MetaInfConfiguration(),
            new FragmentConfiguration(),
            new EnvConfiguration(),
            new PlusConfiguration(),
            new JettyWebXmlConfiguration()
        });

        // === setup jetty plus ==
        Configuration.ClassList classlist = Configuration.ClassList
            .setServerDefault(server);
        classlist.addAfter(
            "org.eclipse.jetty.webapp.FragmentConfiguration",
            "org.eclipse.jetty.plus.webapp.EnvConfiguration",
            "org.eclipse.jetty.plus.webapp.PlusConfiguration");
        classlist.addBefore("org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
            "org.eclipse.jetty.annotations.AnnotationConfiguration");

        context.setContextPath("/");

On Fri, 26 Mar 2021, 22:19 Joakim Erdfelt, <joakim@xxxxxxxxxxx> wrote:
The order of that Configuration list is very important.

It would be better to utilize the Server level component and just add the missing pieces you need.

See: 

        // === setup jetty plus ==
        Configuration.ClassList classlist = Configuration.ClassList.setServerDefault(server);

        // Add JNDI support
        classlist.addAfter(
            "org.eclipse.jetty.webapp.FragmentConfiguration",
            "org.eclipse.jetty.plus.webapp.EnvConfiguration",
            "org.eclipse.jetty.plus.webapp.PlusConfiguration");

        // Add Annotation Scanning Support
        classlist.addBefore("org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
            "org.eclipse.jetty.annotations.AnnotationConfiguration");

Leave the existing Configurations in place, don't overwrite/replace the entire list like you are doing.
There is no need to configure the WebAppContext directly.

Joakim Erdfelt / joakim@xxxxxxxxxxx


On Fri, Mar 26, 2021 at 4:42 PM Som Lima <somplasticllc@xxxxxxxxx> wrote:
Hi, 

There appears to be a number of ways to configure annotations, jsp support programmatically in the jetty embedded. i.e. Configuration.ClassList. 

I have gone for this implementation. 
Is there a one liner  new class I can insert in this code  to add for JSP  functionality followed by corresponding libraries in the pom.xml ?

context.setConfigurations(new Configuration[]
        {
            new AnnotationConfiguration(),
            new WebInfConfiguration(),
            new WebXmlConfiguration(),
            new MetaInfConfiguration(),
            new FragmentConfiguration(),
            new EnvConfiguration(),
            new PlusConfiguration(),
            new JettyWebXmlConfiguration()
        });
Regards


_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users


--
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users


--

Back to the top