Skip to content

Insufficient pluggables #5

Description

@joakime

Everything in Jetty is pluggable. Everything.

The current assumption that all you want is jetty-webapp + jetty-plus assumes/forces configurations that are not needed by many.

Even assumptions such as "jetty will always perform annotation scanning" is false in many valid configurations.

If you take even high-level "concepts" and list them out, as a set of modules that can be "enabled" you have the following.

// from Jetty 9.1.0
// pruned to only show modules relevant to arquillian test suite
// (things stripped: logging / jmx / resource monitoring / network controls / etc)

$ java -jar start.jar --list-modules

Module: annotations
LIB: lib/jetty-annotations-${jetty.version}.jar
LIB: lib/annotations/*.jar
XML: etc/jetty-annotations.xml
depends: [plus]

Module: client
LIB: lib/jetty-client-${jetty.version}.jar
depends: []

Module: continuation
LIB: lib/jetty-continuation-${jetty.version}.jar
depends: []

Module: deploy
LIB: lib/jetty-deploy-${jetty.version}.jar
XML: etc/jetty-deploy.xml
depends: [webapp]

Module: http
XML: etc/jetty-http.xml
depends: [server]

Module: https
XML: etc/jetty-https.xml
depends: [ssl]

Module: jaas
LIB: lib/jetty-jaas-${jetty.version}.jar
XML: etc/jetty-jaas.xml
depends: [server]

Module: jaspi
LIB: lib/jetty-jaspi-${jetty.version}.jar
LIB: lib/jaspi/*.jar
depends: [security]

Module: jndi
LIB: lib/jetty-jndi-${jetty.version}.jar
LIB: lib/jndi/*.jar
depends: [server]

Module: jsp
LIB: lib/jsp/*.jar
depends: [servlet]

Module: npn
depends: []

Module: plus
LIB: lib/jetty-plus-${jetty.version}.jar
XML: etc/jetty-plus.xml
depends: [server, security, jndi]

Module: proxy
LIB: lib/jetty-proxy-${jetty.version}.jar
XML: etc/jetty-proxy.xml
depends: [client, servlet]

Module: rewrite
LIB: lib/jetty-rewrite-${jetty.version}.jar
XML: etc/jetty-rewrite.xml
depends: [server]

Module: security
LIB: lib/jetty-security-${jetty.version}.jar
depends: [server]

Module: server
LIB: lib/servlet-api-3.1.jar
LIB: lib/jetty-schemas-3.1.jar
LIB: lib/jetty-http-${jetty.version}.jar
LIB: lib/jetty-server-${jetty.version}.jar
LIB: lib/jetty-xml-${jetty.version}.jar
LIB: lib/jetty-util-${jetty.version}.jar
LIB: lib/jetty-io-${jetty.version}.jar
XML: etc/jetty.xml
depends: []

Module: servlet
LIB: lib/jetty-servlet-${jetty.version}.jar
depends: [server]

Module: servlets
LIB: lib/jetty-servlets-${jetty.version}.jar
depends: [servlet]

Module: spdy
LIB: lib/spdy/*.jar
XML: etc/jetty-ssl.xml
XML: etc/jetty-spdy.xml
depends: [ssl, npn]

Module: ssl
XML: etc/jetty-ssl.xml
depends: [server]

Module: webapp
LIB: lib/jetty-webapp-${jetty.version}.jar
depends: [security, servlet]

Module: websocket
LIB: lib/websocket/*.jar
depends: [annotations]

--(snip)--

this list merely makes things available on the server side, each webapp can choose to use the feature or not, even having a mix of features expose to the webapps. (such as 2 webapps with websocket support, one with it available, another with it disabled)

Aquillian seems to make assumptions on what is "default" or "baseline" for a container, but makes no statement on what that means.

Referencing:
http://arquillian.org/guides/developing_a_container_adapter/

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions