com.helger:ph-oton-jetty

Embedded Jetty runner for all Java web applications


Keywords
bootstrap, css, datatables, framework, html, j2ee, java, java8, servlet, ui, web
License
Apache-2.0

Documentation

ph-oton

javadoc Maven Central

This set of Java libraries forms a package to build Java web applications.

Contained subprojects are:

  • ph-oton-html - Java wrapper for all HTML elements and attributes
  • ph-oton-jscode - a Java code model to build structured JS code
  • ph-oton-jquery - an extension to ph-html-jscode to also support jQuery
  • ph-oton-atom - ATOM newsfeed stuff
  • ph-oton-io - basic IO stuff (since 9.2.0; previously in ph-oton-app)
  • ph-oton-app - basic application stuff
  • ph-oton-audit - basic auditing stuff
  • ph-oton-ajax - basic AJAX stuff
  • ph-oton-api - basic API stuff
  • ph-oton-security - security elements (user, user groups, roles etc.)
  • ph-oton-exchange - data exchange (import and export)
  • ph-oton-connect - connectivity modules
  • ph-oton-core - basic web stuff
  • ph-oton-uicore - basic web UI stuff
  • ph-oton-icon - icon library
  • ph-oton-tinymce4 - TinyMCE4 wrapper
  • ph-oton-datatables- Datatables.net wrapper
  • ph-oton-uictrls - misc web UI controls
  • ph-oton-jetty - wrapper for Jetty to simply use as main
  • ph-oton-bootstrap3 - Java Wrapper for the Bootstrap 3.x controls
  • ph-oton-bootstrap3-uictrls - special UI controls for Bootstrap 3
  • ph-oton-bootstrap3-pages - predefined UI pages with Bootstrap 3 styling
  • ph-oton-bootstrap3-stub - Servlet stub for Bootstrap 3 web applications
  • ph-oton-bootstrap3-demo - a standalone demo web application to be run in Tomcat or in provided Jetty
  • ph-oton-bootstrap4 - placeholder for Bootstrap 4 controls (still alpha)
  • ph-oton-bootstrap4-uictrls - special UI controls for Bootstrap 4
  • ph-oton-bootstrap4-pages - predefined UI pages with Bootstrap 4 styling
  • ph-oton-bootstrap4-stub - Servlet stub for Bootstrap 4 web applications
  • ph-oton-bootstrap4-demo - a standalone demo web application to be run in Tomcat or in provided Jetty

Requirements

  • Java 11+ is required for building
  • Application server requirements:
    • At least Tomcat 10.x
    • Jetty 11.x with AnnotationConfiguration enabled

Maven usage

Replace x.y.z with the effective version number.

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.helger.photon</groupId>
        <artifactId>ph-oton-parent-pom</artifactId>
        <version>x.y.z</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

Note: prior to v8.2.5 the Maven groupId was com.helger.

Bootstrap 4

To use Bootstrap 4 front end use:

  <dependencies>
    <dependency>
      <groupId>com.helger.photon</groupId>
      <artifactId>ph-oton-bootstrap4-stub</artifactId>
    </dependency>
  </dependencies>

See the submodule ph-oton-bootstrap4-demo for a working example project with Bootstrap 4 UI.

Note: prior to v8.2.5 the Maven groupId was com.helger.

Bootstrap 3

To use Bootstrap 3 front end use:

  <dependencies>
    <dependency>
      <groupId>com.helger.photon</groupId>
      <artifactId>ph-oton-bootstrap3-stub</artifactId>
    </dependency>
  </dependencies>

See the submodule ph-oton-bootstrap3-demo for a working example project with Bootstrap 3 UI.

Note: prior to v8.2.5 the Maven groupId was com.helger.

News and noteworthy

  • v9.2.3 - work in progress
    • Updated to Log4J 2.23.1
  • v9.2.2 - 2024-03-28
    • Updated to ph-commons 11.1.5
    • Updated to Jetty 11.0.20
    • Created Java 21 compatibility
    • The default folder structure for internal errors was changed from YYYY/MM to YYYY/MM/DD
    • Added initial support for charts.js v4
  • v9.2.1 - 2023-09-26
    • Updated to Jetty 11.0.16
    • Fixed DateTime picker error in September for en-gb locale [Java 17]
  • v9.2.0 - 2023-08-20
    • Extracted submodule ph-oton-io for dependency minimized inclusion
  • v9.1.4 - 2023-08-17
    • Updated to DataTables 1.13.6 and latest plugin versions
    • Updated to ph-web 10.1.5
    • Avoid Exception on "Delete all" in failed mail page with Bootstrap4 UI
  • v9.1.3 - 2023-07-31
    • Updated to ph-commons 11.1
  • v9.1.2 - 2023-07-24
    • Updated to DataTables 1.13.5 and latest plugin versions
    • Updated to jQuery 3.7.0
    • Updated to ph-web 10.1.2
  • v9.1.1 - 2023-05-03
    • Updated to Jetty 11.0.15
    • Updated to jQuery 3.6.4
    • Added new enumeration EHCAutoComplete and the possibility to use in the HC edits
    • Updated to DataTables 1.13.4 and latest plugin versions
  • v9.1.0 - 2023-02-24
    • Using Servlet API 5.0.0 as the baseline: JakartaEE 9, Java 11+, Apache Tomcat v10.0.x, Jetty 11.x
    • Switched all namespaces from javax.servlet to jakarta.servlet
    • Updated to Jetty 11.0.13
    • Updated to Log2J 2.20.0
    • Updated to Jetty 11.0.13
    • Incorporated UserToken JDBC manager from v8.4.5
  • v9.0.0 - 2023-02-14
    • Using Java 11 as the baseline
    • Updated to ph-commons 11
    • Using Servlet API 4.0.1 as the baseline: JakartaEE 8, Java 11+, Apache Tomcat v9.x, Jetty 10.0.x
    • Updated to Jetty 10.0.13
    • Updated from org.apache.logging.log4j:log4j-slf4j-impl to org.apache.logging.log4j:log4j-slf4j2-impl for SLF4J 2.x
  • v8.4.5 - 2023-02-23
    • Updated to Jetty 9.4.50
    • Updated to Log2J 2.20.0
    • Fixed default caching option for non GET requests
    • Extended some API to adopt to the new UserToken requirements
    • Added UserToken manager for JDBC
  • v8.4.4 - 2023-01-23
    • Updated to jQuery 3.6.3
    • Updated to DataTables 1.13.1 and latest plugin versions
    • Added methods setAriaRequired, addToAriaDescribedBy and setAriaInvalid to class IHCAttrContainer
    • Added method IHCElement.withCustomAttrs
    • Made some general accessibility improvements
  • v8.4.3 - 2022-10-04
    • Updated to Jetty 9.4.49
    • Updated to Log2J 2.19.0
    • Extended the interface ISystemMessageRenderer with a display text
    • Renamed Java method var to variable in JS* classes
    • Fixed a potential NPE when trying to login with a non-existing user
    • Fixed an issue in chartjs v1 CSS
    • Changed chart.js package from com.helger.photon.uictrls.chart to com.helger.photon.uictrls.chart.v1 (backwards incompatible change)
  • v8.4.2 - 2022-09-07
    • Updated to jQuery 3.6.1
    • Updated to jQuery Migrate 3.4.0
    • Updated to js-cookie v3.0.1
    • Updated to js-storage v1.0.4
    • Updated to Moment.js 2.29.4
    • Updated PDFObject to v2.2.8
    • Integrated ph-oton-jdbc submodule
    • The default minimum password length changed from 6 to 8
    • Deprecated HCSWFObject
  • v8.4.1 - 2022-08-17
    • Updated to Apache HttpClient 5.x
    • Updated to Bootstrap 4.6.2
    • Updated to Jetty 9.4.48
    • Updated to Log2J 2.18.0
    • Updated to ph-web 9.7.1
    • Made class DoNothingAuditor final
    • Added class DoNothingAuditManager
    • Class AbstractLoginManager now has the possibility to specify a waiting time in case of a failed login
    • Deprecated classes HCUniversalAnalytics and HCGoogleAnalytics
    • Added support for Google Analytics V4
    • Fixed an error in the MarkDown "safe mode" processing
    • The UITextFormatter and the BootstrapSystemMessage MarkDown renderer now use the "safe mode" as the default
  • v8.4.0 - 2022-04-04
    • Updated to Jetty 9.4.46
    • Updated chart.js from 1.0.2 to 1.1.1
    • Updated to Bootstrap Icons 1.8.1
    • Updated to DataTables 1.11.5 and latest plugin versions
    • Updated the list of predefined aria- attributes
    • Disabled the "directory listing" in the JettyStarter by default
    • Disabled sending the server version and the X-Powered-By header in JettyStarter by default
    • Added support for HTML element <dialog>
    • Moved class HCHgroup from package .deprecated to .section
    • Moved class HCMenu from package .interactive to .grouping
    • Added classes HCMap, HCArea, EHCReferrerPolicy
    • Improved the overall HTML compliance according to the latest standard
    • Dropped the specific HTML 5 annotations
    • HCMenu now takes HCLI children instead of HCMenuItem children
    • Extended HTML accessibility API - thx to @Dafnik
    • The default script mode for inline scripts was changed from PLAIN_TEXT_WRAPPED_IN_COMMENT to PLAIN_TEXT_NO_ESCAPE
    • Dropped support for Internet Explorer
  • v8.3.6 - 2022-01-04
  • v8.3.5 - 2021-12-21
  • v8.3.4 - 2021-12-14
  • v8.3.3 - 2021-12-13
  • v8.3.2 - 2021-11-24
    • Updated to Bootstrap 4.6.1
    • Updated to FineUploader 5.16.2
    • Updated to Jetty 9.4.44
    • Updated to ph-commons 10.1.4
    • Made the IAuditManager customizable in the PhotonSecurityManager
    • Added built-in Base64 encode and decode pages in the "Utilities" menu area
    • Added class CountingSftpProgressMonitor
    • Fixed some SonarQube issues - nothing serious
  • v8.3.1 - 2021-08-05
    • Updated to Jetty 9.4.43
    • Updated to ph-web 9.6.1
    • Updated DataTables to 1.10.24
    • Updated Bootstrap4 DateTimePicker to 5.39.0
    • Updated FontAwesome to 5.15.4
    • Added Bootstrap Icons 1.5.0 in ph-oton-icon
    • Improved the way, Jetty dependencies are handled in the POM
    • BootstrapForm and BootstrapViewForm handle splitting with negative values for certain grid elements
    • Made the BootstrapFileUpload placeholder label customizable
    • Added the possibility to add an ID on the BootstrapNav of a BootstrapTabBox
    • Made class BootstrapCardCollapsible more customizable
    • Added custom jQuery function setReadOnly
    • Made the BootstrapDateTimePicker default icon customizable - #9
    • Hiding environment variables that start with SECRET_ - see #10
  • v8.3.0 - 2021-03-22
    • Updated to Apache commons-net 3.8.0
    • Updated to Bootstrap 4.6.0
    • Updated to Jetty 9.4.36
    • Updated to jQuery 3.6.0
    • Updated to ph-commons 10
    • The name of the WebFragment ph-oton-bootstrap3-stub changed to ph_oton_bootstrap4_stub
    • The name of the WebFragment ph-oton-bootstrap4-stub changed to ph_oton_bootstrap3_stub
    • Extended HCExtImg to correctly remove the servlet context if it is present
    • Added BootstrapSelect2 as a Bootstrap 4 theme of Select2
    • Added new predefined page to change the log level at runtime (when using Log4J 2.x)
  • v8.2.9 - 2020-11-18
    • Updated to Apache commons-net 3.7.2
    • Updated to Bootstrap 4.5.3
    • Updated to Jetty 9.4.34
    • Updated to Log4j 2.14.0
    • Improved handling of generic children for HTML tables
    • Added new sanity method BootstrapFormGroup.setLabelForCheckBox
    • Added CSS classes to ELabelType directly
  • v8.2.8 - 2020-09-17
    • Updated to Jakarta JAXB 2.3.3
  • v8.2.7 - 2020-09-15
    • Updated to ph-commons 9.4.8
    • Improved long running job error handling
    • Extended ConfigurationFileManager API
    • Using Popper UMD JS instead of the default distribution
  • v8.2.6 - 2020-08-20
    • Updated animate.css to 4.1.0
    • Updated to Apache commons-net 3.7
    • Updated to autoNumeric 1.9.46
    • Updated to Bootstrap 4.5.2
    • Updated to CookieConsent 3.1.1
    • Updated to Jetty 9.4.31
    • Updated to popper.js 1.16.1-lts
    • Updated to PrismJS 1.2.1
    • Updated to Select2 4.0.13
    • Removed autosize 1.8
    • Improved customizability of ExporterExcel
    • Fixed XML serialization of long running job data
    • Reworked the PrismJS API and made the plugins more customizable
    • Extended the Long running job API
    • Added new class PhotonWorkerPool as a shared worker pool
    • Improved coding style thanks to Sonar
  • v8.2.5 - 2020-05-26
    • Changed Maven groupId to com.helger.photon
    • Updated to ph-web 9.3.0 (new Maven groupId)
  • v8.2.4 - 2020-05-25
    • Updated to Bootstrap 4.5.0
    • Updated to Jetty 9.4.29
    • Updated to jQuery 3.5.1
    • Updated to Log4j 2.13.3
    • Updated to ph-commons 9.4.4
    • Added new classes SessionBackedRequestFieldBoolean and SessionBackedRequestFieldBooleanMultiValue
    • Added new configuration file syntax JSON
    • Fixed an issue with the configuration file ID for the tab
    • Extracted IRoleManager from RoleManager
    • Extracted IUserManager from UserManager
    • Extracted IUserGroupManager from UserGroupManager
    • Made PhotonUnifiedResponse chainable
  • v8.2.3 - 2020-02-19
    • Fixed an error with the temporary directory name creation in JettyStarter
    • Updated to ph-web 9.1.10
    • Made HttpClientSettings configurable for ReCaptchaServerSideValidator
    • Improved API to be more sensitive on encoded and decoded URI paths
    • Added different date time representations to the default InternalErrorMetadata
    • Added a new Admin page for performing a remote HTTP client call
    • Extended traits interfaces IHCTrait and IHCBootstrap4Trait
  • v8.2.2 - 2020-02-12
    • Updated to Jetty 9.4.26
    • Updated to Bootstrap 4.4.1
    • Updated to log4j 2.13.0
    • Made a StubObject constructor public
    • Added a version number constant to access information at runtime
    • Extended JettyStarter to create multiple contexts
    • Added possibility to add "redirects" to the menu tree to allow to change the URLs of existing items without breaking existing bookmarks
    • Extracted IUserTokenManager interface
    • Added possibility to globally configure if internal errors should be send as email and/or saved as XML
    • Unified the WebPageActionHandler API (backwards incompatible change)
    • Added traits interfaces IHCTrait and IHCBootstrap4Trait as syntactic sugar
    • Added a new system page showing the content of the System Truststore (cacerts)
  • v8.2.1 - 2019-10-08
    • Updated to log4j 2.12.1
    • Updated to Jetty 9.4.21
    • Updated to ph-web 9.1.4
    • Updated to ph-commons 9.3.7
    • Fixed the automatic module name of project ph-oton-bootstrap4-pages
    • BootstrapLoginHTMLProvider now uses a form URL without the leading hostname
    • Updated to HandleBars 4.x
  • v8.2.0 - 2019-06-24
    • Improved B4 InputGroup API for easier extension
    • Updated to Jetty 9.4.19
    • Improved Bootstrap 4 inline form UI creation
    • Improved API path ambiguity resolution API (interface IAPIPathAmbiguityResolver et. al.)
    • Added new API Interface IAPIRegistry and let GlobalAPIInvoker implement it
    • Clearly separate between AjaxRegistry and AjaxInvoker similar to new API API
    • Reworked module structure (created ph-oton-app, ph-oton-audit, ph-oton-ajax, ph-oton-api, removed ph-oton-basic)
    • Updated to jQuery 3.4.1
    • Requires ph-commons 9.3.3
    • Requires ph-web 9.1.2
    • CheckDiskUsableSpaceJob can now be scheduled more than once for different paths
    • Application startup time is now displayed in the "System Properties" Administration page
    • Added support for loading attribute in HCImg and HCIFrame
    • Started extending audit library to be more flexible and efficient - not used yet
  • v8.1.3 - 2019-02-18
    • Updated to Bootstrap 4.3.1
    • Updated to Bootstrap 3.4.1
    • Bootstrap 4 BootstrapInputGroup API was reworked, so that the parent/child relationship holds true (incompatible)
    • Updated to log4j 2.11.2
    • ISimpleWebExecutionContext was extended with the LoggedInUser
    • API API was extended to support only different MIME types
    • Added an exception mapper to the API handling
    • Requires ph-web 9.1.1
  • v8.1.2 - 2019-01-07
    • Added B4 tooltips, Jumbotron and Modal dialog
    • Added class BootstrapPageRenderer for consistent page rendering
    • Added B4 collapsible Card
    • Small improvement in rendering memory consumption and speed
    • Extracted IDataTablesLengthMenu interface
    • Added B4 file upload control
    • B4 BootstrapHelper became BootstrapFormHelper
  • v8.1.1 - 2018-11-25
    • Fixed error in quoting of B3 user group management page
    • Added special CSS Class to B4 BootstrapPageHeader
    • Changed B4 BootstrapDateTimePicker initialization to correctly handle the default values
    • Extended FavoriteManager API
    • Updated to Jetty 9.4.14
    • Changed B4 BootstrapDateTimePicker to not use currentDate by default
    • Requires ph-commons 9.2.0
  • v8.1.0 - 2018-10-25
    • Extended the Favorite APIs
    • Initial versions of the subproject ph-oton-bootstrap4-uictrls is available
    • Initial versions of the subproject ph-oton-bootstrap4-pages is available
    • Initial versions of the subproject ph-oton-bootstrap4-demo is available
    • Internal errors are stored in an additional "month" sub-directory
    • Internal error storage paths are now customizable
    • Added FontAwesome 5.2.0 free icons
    • Improved state API slightly
    • User group and role user interfaces were improved
    • Updated to ph-web 9.0.5
    • Updated to popper 1.14.4
    • Added bulk export format "JSON (simple)" to have one without type information
    • Added a new Bootstrap 4 DateTime picker UI ctrl
    • Updated to Jetty 9.4.12
    • Updated to TinyMCE 4.8.2
    • Separated HCPrismJS and TypeaheadEdit in Bootstrap 3 and 4 versions
    • Dropped jQuery 1.x and 2.x files
    • Updated DataTables to 1.10.18
    • Added new base page "Port checker"
    • Improved JettyStarter customizability
  • v8.0.2 - 2018-07-25
    • Updated to Bootstrap 4.1.3
    • Reworked meta element API so that <meta charset="..."> can be handled
    • Fixed OSGI ServiceProvider configuration
    • Updated to Jetty 9.4.11
    • Updated to ph-commons 9.1.3
    • Updated to ph-web 9.0.2
    • Extended *HCSelect APIs for multi values
    • The "Change log" page was removed
    • Extended JSSwitch API
    • Improved signatures of AbstractJSBlock (binary incompatible)
    • Updated to ph-masterdata 6.1.0
  • v8.0.1 - 2018-04-18
    • Updated to Jetty 9.4.9
    • Updated to Bootstrap 4.0.0
    • Bootstrap3Panel type can be changed
    • Replaced some StubjObject with IBusinessObject
  • v8.0.0 - 2018-01-05
    • Updated to ph-commons 9.0.0
    • Renamed 'Client' to 'Tenant' and moved to ph-tenancy in ph-masterdata project
    • Updated to Bootstrap 4.0.0-beta
    • Updated to TinyMCE 4.6.6
    • Updated to Jetty 9.4.8
    • Extracted ph-oton-atom
    • Initial versions of the subproject ph-oton-bootstrap4-stub is available
  • v7.1.2 - 2017-07-19
    • Fixed an error with path handling of resource bundles when deployed as JAR
  • v7.1.1 - 2017-07-18
    • Requires ph-commons 8.6.6
    • ServletContext base path can now be any URL (instead of a mandatory File)
    • Made ServletStatusManager non-static
    • Improved JS API (better Json support)
  • v7.1.0 - 2017-07-05
    • Updated to ph-web 8.8.x
    • Improved rendering speed through internal optimizations
    • Updated to Bootstrap Datetime picker 2.4.4
    • Updated to Jetty 9.4.6
    • CharacterEncodingFilter more flexible
    • Updated to DataTables 1.10.15
  • v7.0.5 - 2017-03-30
    • Updated to Jetty 9.4.3
    • Updated to ph-schedule 3.6.1
    • Improved SystemMessage API
  • v7.0.4 - 2017-03-09
    • Updated to Jetty 9.4.2
    • API extensions
    • Updated to Apache commons-net 3.6
    • Improved internal error handling API
    • Internal changes in the ph-oton jobs.
    • Removed some deprecated methods
  • v7.0.3 - 2017-01-10
    • Integrated ph-html into ph-oton
    • Binds to ph-commons 8.6.0
  • v7.0.2 - 2017-01-03
    • Updated to Jetty 9.4.0
    • Binds to ph-commons 8.5.6
    • Binds to ph-web 8.7.0
    • Improved default request parameter handling customizability
    • New artefact ph-oton-icon
  • v7.0.1 - 2016-11-14
    • Improvements in request tracking logging
    • Misc small improvements in different areas
    • Updated to Jetty 9.3.14.v20161028
  • v7.0.0 - 2016-10-24
    • Requires ph-commons 8.5.2
  • v7.0.0-beta3 - 2016-09-22
    • Based on ph-commons 8.5.x
  • v7.0.0-beta2 - 2016-08-31
    • Based on ph-commons 8.4.x
  • v7.0.0-beta1 - 2016-07-27
    • Updated to Java 1.8
    • Based on ph-commons 8.2.x
  • v6.2.0 - 2015-12-03
    • extracted security module
    • added support for app and user token management
    • Last release for Java 1.7
  • v6.1.0 - 2015-10-02
    • merged web actions and ajax functions
  • v6.0.0 - 2015-09-14
    • first ph-oton release based on old webbasics and webctrls etc.
    • requires ph-commons 6.x

My personal Coding Styleguide | It is appreciated if you star the GitHub project if you like it.