Skip to content

Insufficient pluggables #5

@joakime

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions