AsciiDoc

1 program Added 2026-02-13T18:30:00Z Agent: claude-codeModel: sonnetWebSearch: disabled Evidence Report issue View issues
Aliases: —
Provenance: commit da43b40a22 · authored 2026-02-13T16:22:23+01:00 · agent claude-code · model sonnet

Sources mentioning this language

7 sources · pl_id: pl/asciidoc
LLM (this repo) · 1PldbLinguistPygmentsWikipediaHyperpolyglotWikidata · Q723030

Wikipedia infobox

Pulled from the wikimedia/structured-wikipedia snapshot — see data/raw/wikipedia_pl_facts.*.jsonl and pl_fact.csv for the long-table provenance.

Designed byMatthew Peveler · Dan Allen · Michel Krämer · et al · Sarah White
First appeared2002
LicenseGPL v2
Homepagehttp://asciidoc-py.github.io

Extensions claimed by this language

13 claims. Each row is one upstream assertion with its strength. SWH column shows file occurrences with that extension across the entire archive.
ExtensionSourceStrengthSWH
.adocwikidataprimary4.2M files
.ascpygmentsprimary1.7M files
.asciidoclinguistprimary683.6K files
.asciidocwikidataprimary683.6K files
.txtwikidataprimary517.9M files
.adoclinguistsecondary4.2M files
.asclinguistsecondary1.7M files
.id_dsapygmentssecondary
.id_ecdsapygmentssecondary
.id_ecdsa_skpygmentssecondary
.id_ed25519pygmentssecondary
.id_rsapygmentssecondary
.pempygmentssecondary3.2M files

Related languages

AsciiDots (0.50)Ascent (0.20)Paradoc (0.19)Astro (0.13)XProc (0.13)

LLM-contributed programs

AsciiDoc Syntax Example

Provenance: commit da43b40a22 · authored 2026-02-13T16:22:23+01:00 · agent claude-code · model sonnet · WebSearch disabled
code.adoc · added: 2026-02-13T18:30:00Z
= AsciiDoc Example
:toc:
:numbered:

== Introduction

This is a simple AsciiDoc document demonstrating basic syntax.

== Features

AsciiDoc supports:

* Lists (ordered and unordered)
* *Bold* and _italic_ text
* `Code snippets`
* Tables
* Admonitions

== Code Example

[source,python]
----
def hello():
    print("Hello, World!")
----

== Conclusion

AsciiDoc is a powerful markup language for technical documentation.

Real programs from Software Heritage

3 samples mined from derived_datasets/<date>/contents/*.parquet, byte-verified against the SWH archive. Citation-grade qualified SWHIDs preserved.
2017-12-21-jsf-implementation-open-liberty-17004.adoc · 7400 B · ext .adoc · seen 7810× in SWH
via fallback
swh:1:cnt:1263991ebf5b624a5824a1ff5c807244fb84b095;origin=https://github.com/OpenLiberty/blogs;anchor=swh:1:rev:aed17e0f31e7d98a23a95852b5a75250775d2c2d;path=/posts/2017-12-21-jsf-implementation-open-liberty-17004.adoc
Open in SWH · Raw bytes (SWH) · GitHub raw
Show source
---
layout: post
title:  "Bring your own JSF implementation to Open Liberty 17.0.0.4"
date:   2017-12-21 12:05:00 +0100
categories: blog
author_picture: https://avatars3.githubusercontent.com/u/3322532
author_github: https://github.com/lauracowen
---
:description: Download updates for JSF Container (bring your own JSF implementation!), Concurrency, and distributed tracing in Open Liberty 17.0.0.4.
= Bring your own JSF implementation to Open Liberty 17.0.0.4
Laura Cowen <https://github.com/lauracowen>
:imagesdir: /
:url-prefix:
:url-about: /

And, like a flash, a second release of Open Liberty (17.0.0.4) is upon us! Fancy bringing your own JSF implementation (Mojarra or MyFaces) to Open Liberty? You can now (and benefit from CDI) with the JSF Container 2.2 feature. Also, administrators can now configure concurrency policies for managed executors (Concurrency updates), and get distributed tracing with our implementation of opentracing.io.

Remember, if you're really keen, you can see what's being developed in Open Liberty in the https://openliberty.io/downloads/[nightly builds]. Feel free to https://openliberty.io/contribute/[raise or even fix a bug]. Fancy influencing the future direction of Open Liberty? Join the https://groups.io/g/openliberty[Open Liberty discussion group].

As we don't have a full set of documentation implemented for Open Liberty yet, the items below point (where relevant) to the official documentation for WebSphere Liberty (which is built on Open Liberty) so you can find out more about them.

You can now download Open Liberty and Open Liberty Tools 17.0.0.4.

[link=https://openliberty.io/downloads/]
image::img/blog/blog_btn_download-ol.svg[Download Open Liberty]

[link=https://stackoverflow.com/tags/open-liberty]
image::img/blog/blog_btn_stack.svg[Ask a question on Stack Overflow]

Alternatively, if you're using Maven, here are the coordinates:

[source,xml]
----
<dependency>
    <groupId>io.openliberty</groupId>
    <artifactId>openliberty-runtime</artifactId>
    <version>17.0.0.4</version>
    <type>zip</type>
</dependency>
----

Or if you're using Docker:

[source]
----
docker pull openliberty/open-liberty
----

In Open Liberty 17.0.0.4, you'll find :

* <<jsfcontainer22,JSF Container 2.2>>
* <<concurrency,Concurrency>>
* <<opentracing,Distributed tracing>>

[#jsfcontainer22]
## JSF Container 2.2

This feature makes it possible to bring your own JSF implementation (either Mojarra or MyFaces) for JSF 2.2 and take advantage of CDI integrations provided by the `cdi-1.2` feature.

To try this, enable the `jsfContainer-2.2` feature in your `server.xml`, and package your own JSF API and implementation inside of your application and off you go!

[source,xml]
----
<featureManager>
    <feature>jsfContainer-2.2</feature>
</featureManager>
----


[#concurrency]
## Concurrency

The administrator is now able to configure concurrency policies for managed executors for finer-grained control over concurrency constraints and other behavior.  This includes how many tasks are allowed to run in parallel, how many tasks can queue up, and what action to take when it is not possible to queue a task for execution, among other behaviors.  Different policies can be assigned for long-running tasks (identified by the `LONGRUNNING_HINT` execution property) versus normal tasks.  Managed executors continue to be backed by the Liberty global thread pool and continue to benefit from Liberty's autonomic tuning, but it is now possible to impose these constraints to individual managed executors or groups of managed executors (multiple can share a single concurrency policy).

To try it out, configure one or more concurrency policies in the `server.xml` file. For example:

[source,xml]
----
<concurrencyPolicy id="max10" max="10" maxQueueSize="30" maxWaitForEnqueue="20s" startTimeout="1m"/>
----

Managed executors can be configured to use the concurrency policy as follows:

[source,xml]
----
<managedExecutorService jndiName="concurrent/executor1" concurrencyPolicyRef="max10"/>
<managedScheduledExecutorService jndiName="concurrent/executor2" concurrencyPolicyRef="max10"/>
----

For more info, see the WebSphere Liberty Knowledge Center docs on https://www.ibm.com/support/knowledgecenter/SSEQTP_liberty/com.ibm.websphere.liberty.autogen.base.doc/ae/rwlp_config_managedExecutorService.html[Configuring the managed executor service] and https://www.ibm.com/support/knowledgecenter/SSEQTP_liberty/com.ibm.websphere.liberty.autogen.base.doc/ae/rwlp_config_managedScheduledExecutorService.html[Configuring the managed scheduled executor service].

[#opentracing]
## Distributed tracing

The `opentracing-1.0` feature, together with a user provided `io.opentracing.Tracer` implementation, enables JAX-RS applications to automatically create, propagate, and deliver distributed tracing information.

In an environment with numerous services communicating with each other, distributed trace information provides a way to view the end-to-end flow of requests through multiple services. In many environments, there is a central trace collection service that accepts distributed tracing information from individual applications (one popular distributed tracing service is Zipkin). The central service correlates the distributed tracing information, and presents the end-to-end request flow information with a UI.

The http://opentracing.io/[opentracing.io] project defines an API that applications can use to create, propagate, and deliver distributed trace information. An implementation of the opentracing.io API must be available to an application so that the application can deliver distributed trace information. The implementation of the opentracing.io API must match the implementation of the central trace collection service. For example, if the central trace collection service is Zipkin, then the opentracing.io implementation used by applications must perform distributed tracing functions in a way that is specific to Zipkin.

Typically, the developer of each application in the environment must explicitly add code to the application in order for it to create, propagate, and deliver distributed tracing information. With the `opentracing-1.0` feature of Liberty, developers do not need to add any code to their JAX-RS applications to participate in distributed tracing. The JAX-RS application will automatically create, propagate, and deliver distributed tracing information.

Each Liberty server in the environment must be configured with a user feature that provides an implementation of the opentracing.io API. The user feature must provide an implementation of the opentracing.io API that matches the central trace collection service that is used in the environment.

You can find sample source code for https://github.com/WASdev/sample.opentracing.zipkintracer[a user feature that provides a Zipkin-specific opentracing.io API implementation] on GitHub. Or you can download http://central.maven.org/maven2/net/wasdev/wlp/tracer/liberty-opentracing-zipkintracer/1.0/liberty-opentracing-zipkintracer-1.0-sample.zip[a built version of the user feature] from Maven Central.




## Ready to give it a try?


[link=https://openliberty.io/downloads/]
image::img/blog/blog_btn_download-ol.svg[Download Open Liberty]

[link=https://stackoverflow.com/tags/open-liberty]
image::img/blog/blog_btn_stack.svg[Ask a question on Stack Overflow]
2018-06-29-full_java_ee_8_liberty_18002.adoc · 29936 B · ext .adoc · seen 7810× in SWH
via fallback
swh:1:cnt:383f2d7e0a29f06a88cfe97229b7e45bc1e53527;origin=https://github.com/OpenLiberty/blogs;anchor=swh:1:rev:aed17e0f31e7d98a23a95852b5a75250775d2c2d;path=/posts/2018-06-29-full_java_ee_8_liberty_18002.adoc
Open in SWH · Raw bytes (SWH) · GitHub raw
Show source
---
layout: post
title: Get full Java EE 8 in Open Liberty 18.0.0.2
date:   2018-06-29 08:00:00 -0000
categories: blog
author_picture: https://avatars3.githubusercontent.com/u/3322532
author_github: https://github.com/lauracowen
seo-title: Get the full Java EE 8 implementation in Open Liberty 18.0.0.2 - OpenLiberty.io
seo-description: Full Java EE 8 support, including JAX-RS 2.1 reactive client and server-sent events, CDI event-ordering and asynchonous events, HTTP/2 support in servlets, JSF 2.3, JPA 2.2, JWT cookies (yum!), security improvements,...oh, and you can now deploy Spring Boot applications to Liberty.
blog_description: "Full Java EE 8 support, including JAX-RS 2.1 reactive client and server-sent events, CDI event-ordering and asynchonous events, HTTP/2 support in servlets, JSF 2.3, JPA 2.2, JWT cookies (yum!), security improvements,...oh, and you can now deploy Spring Boot applications to Liberty."
---
= Get full Java EE 8 in Open Liberty 18.0.0.2
Laura Cowen <https://github.com/lauracowen>
:imagesdir: /
:url-prefix:
:url-about: /

Yes, it's here! Open Liberty is the first app server (to our knowledge) with full Java EE 8 support. What does that mean? Well, we've got the goodness of JAX-RS 2.1 reactive client and server-sent events, CDI event-ordering and asynchonous events, HTTP/2 support in servlets, JSF 2.3 (for the JSF fans, you know who you are), JPA 2.2, JWT cookies (yum!), security improvements,...oh, and you can now deploy Spring Boot applications to Liberty #justsayin'

What are you waiting for? Download Open Liberty 18.0.0.2:

[link=https://openliberty.io/downloads/]
image::img/blog/blog_btn_download-ol.svg[Download Open Liberty, align="center", role="download-ol-button"]

[link=https://stackoverflow.com/tags/open-liberty]
image::img/blog/blog_btn_stack.svg[Ask a question on Stack Overflow, align="center"]

Alternatively, if you're using https://www.openliberty.io/guides/maven-intro.html[Maven], here are the coordinates:

[source,xml]
----
<dependency>
    <groupId>io.openliberty</groupId>
    <artifactId>openliberty-runtime</artifactId>
    <version>18.0.0.2</version>
    <type>zip</type>
</dependency>
----

Or for https://openliberty.io/guides/gradle-intro.html[Gradle]:

[source,json]
----
dependencies {
    libertyRuntime group: 'io.openliberty', name: 'openliberty-runtime', version: '[18.0.0.2,)'
}
----

Or if you're using Docker:

[source]
----
docker pull open-liberty
----

In Open Liberty 18.0.0.2, you'll find:

*  <<javaee8,Full support for Java EE 8:>>
** <<jaxrs,Reactive client and server-sent events with JAX-RS 2.1>>
** <<cdi,Asynchronous events, event ordering, and more with CDI 2.0>>
** <<servlet40,Write dynamic web applications with Servlet 4.0>>
** <<http2,HTTP/2 protocol support>>
** <<jsf,Build user interfaces for web applications with JavaServer Faces (JSF) 2.3>>
** <<jpa,Interact with databases with Java Persistence API (JPA) 2.2>>
** <<jwtsso,Emit and consume JWT cookies with JWT Single Sign-on 1.0>>
** <<appsecurity,Secure your applications using Security API 1.0 specification>>
** <<jsonb,Store JSON with JSON-B 1.0>>
** <<beanval,Validate objects, parameters, and more with Bean Validation 2.0>>

* And:
** <<spring,Deploy Spring Boot applications to Liberty>>
** <<certmapper,Control how custom X.509 certificates map to users in Liberty's LDAP and basic user registries>>

As we don't have a full set of documentation implemented for Open Liberty yet, the items below point to the https://www.ibm.com/support/knowledgecenter/SSEQTP_liberty/as_ditamaps/was900_welcome_liberty.html[official documentation for WebSphere Liberty] so you can find out more about them (WebSphere Liberty is built on Open Liberty).

[#javaee8]
== Full support for Java EE 8

https://openliberty.io/downloads/[Download Liberty] with either the Java EE 8 Web Profile runtime or the Java EE 8 Full Platform runtime.

You can enable all of the Java EE 8 features (or the more lightweight set of Web Profile features) with a single feature in your `server.xml`.

=== Java EE 8 Web Profile

The features included when you enable the `webProfile-8.0` feature (Java EE 8 Web Profile) and are new in Java EE 8 are:

* `appSecurity-3.0`
* `beanValidation-2.0`
* `cdi-2.0`
* `jaxrs-2.1`
* `jaxrsClient-2.1`
* `jpa-2.2`
* `jpaContainer-2.2`
* `jsf-2.3`
* `jsonb-1.0`
* `jsonp-1.1`
* `servlet-4.0`

The `webProfile-8.0` feature also contains the following features which are unchanged from Java EE 7: `distributedMap01.0`, `ejbLite-3.2`, `el-3.0`, `jaspic-1.1`, `jdbc-4.2`, `jndi-1.0`, `jsp-2.3`, `managedBeans-1.0`, `ssl-1.0`, `websocket-1.1`.

To enable the whole of the `webProfile-8.0` feature, add the feature definition to your `server.xml`:

[source,xml]
----

<featureManager>
    <feature>webProfile-8.0</feature>
</featureManager>

----

=== Java EE 8 Full Profile

The features included when you enable the `javaee-8.0` feature (Java EE 8 Full Platform) and are new in Java EE 8 are:

* `webProfile-8.0` (see above)
* `javaMail-1.6`

The `javaee-8.0` feature also contains the following features which are unchanged from Java EE 7: `appClientSupport-1.0`, `batch-1.0`, `concurrent-1.0`, `ejb-3.2`, `ejbHome-3.2`, `ejbPersistentTimer-3.2`, `jacc-1.5`, `jaspic-1.1`, `jaxws-2.2`, `jca-1.7`, `jcaInboundSecurity-1.0`, `jms-2.0`, `mdb-3.2`, `wasJmsClient-2.0`, `wasJmsSecurity-1.0`, `wasJmsServer-1.0`.

To enable the whole of the `javaee-8.0`, add the feature definition to your `server.xml`:

[source,xml]
----

<featureManager>
    <feature>javaee-8.0</feature>
</featureManager>

----

For more info:

* http://www.oracle.com/technetwork/java/javaee/tech/java-ee-8-3890673.html[Java EE 8 technologies list (Oracle)]

[#jaxrs]
== Reactive client and server-sent events with JAX-RS 2.1

JAX-RS 2.1 enables two exciting new technologies: reactive client and server-sent events.  The reactive client takes full advantage of Java 8 lambda expressions to enable highly scalable multi-threaded clients.  Server-sent events allow developers to send data asynchronously to multiple clients, either individually or by broadcasting to all in an efficient manner.

Coding an asynchronous JAX-RS client was possible in JAX-RS 2.0 but the reactive client in 2.1 enables much more parallelism with much less code.  Users can now kick off multiple client requests having each one react to the response from the server, potentially by making new asynchronous requests.

Server-sent events was not possible using JAX-RS APIs prior to 2.1.  Users wishing to send updates to remote clients using JAX-RS would need to rely on polling which is inefficient.  Otherwise, they would need to rely on third-party implementations to provide SSE or SSE-like functionality.  Now a JAX-RS resource can allow multiple clients to register for events - then send them on a schedule, randomly, at the request of other clients, with very little code.

To enable JAX-RS 2.1, add the definition to your `server.xml`:

[source,xml]
----

<featureManager>
    <feature>jaxrs-2.1</feature>
</featureManager>

----

For more info:

* https://www.linkedin.com/pulse/my-favorite-part-jax-rs-21-implementers-view-j-andrew-mccright/[My favourite part of JAX-RS 2.1: An implementer's view]
* https://www.ibm.com/support/knowledgecenter/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_dep_jaxrs21.html[JAX-RS 2.1 (Knowledge Center)]
* https://www.ibm.com/support/knowledgecenter/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/cwlp_jaxrs21_behavior.html[Changes between JAX-RS 2.0 and JAX-RS 2.1 (Knowledge Center)]
* https://jcp.org/en/jsr/detail?id=370[JAX-RS 2.1 spec]
* https://jax-rs.github.io/apidocs/2.1/[JAX-RS 2.1 Javadoc]


[#cdi]
== Asynchronous events, event ordering, and more with CDI 2.0

CDI 2.0 provides the following support:

* Activate Request Context - Some third-party framework developers might want to have their own request lifecycle and have a tight control of it without creating a custom context. Previously, it was not possible for application developers to activate Request Context. CDI 2.0 added this support so that some unnecessary custom Request Scoped creation can be avoided.
* Event ordering and asynchronous events - Prior to CDI 2.0, it was not possible to order the event notification. In CDI 2.0, use `@Priority` to order the synchronous event notifications. In CDI 2.0, you can fire and observe asynchronous events.
* Add Interceptor support to produced beans - CDI 2.0 adds interceptor support on a producer using InterceptionFactory so that the produced beans have interceptors applied.
* Provide a number of annotation literals - CDI uses annotation literals in various places. Previously, you needed to create annotation literal classes for some built-in scopes or qualifiers. In CDI 2.0, the APIs have the annotation literal provided so that the annotation literal for some useful scopes  or qualifiers are provided by the CDI APIs.

For example, in order to find a Foo bean with the `Default` qualifier, before CDI 2.0 you needed to do the following:

[source,java]
----

@Inject Instance<Foo> foo;

public Foo getFoo() {

return instance.select(DefaultLiteral.INSTANCE).get();

}

public class DefaultLiteral extends AnnotationLiteral<Default> implements Default {

    public static final DefaultLiteral INSTANCE = new DefaultLiteral();

    private DefaultLiteral() {}

}
----

In CDI 2.0, you can do the following:

[source,java]
----

@Inject Instance<Foo> foo;

public Foo getFoo() {

return instance.select(Default.Literal.INSTANCE).get();

}
----

As you can see, in CDI 2.0, you can use `Default.Literal.INSTANCE`` to get the annotation of `Default`, which is a lot simpler.

* CDI SPI configurators - In CDI 1.x, using SPI is used to generate verbose and less elegant code. In CDI 2.0, the configurators solve this. These configurators are accessible in lifecycle container event when writing extensions.

To enable the CDI 2.0 feature, add the feature definition to your `server.xml`:

[source,xml]
----

           <featureManager>
                  <feature>cdi-2.0</feature>
          </featureManager>

----



[#servlet40]
== Write dynamic web applications with Servlet 4.0

Servlet 4.0 is the latest Java EE 8 version of the Servlet specification.

The `servlet-4.0` feature includes the new Servlet 4.0 features and functions, for example:

* Support for HTTP/2 push/promise.
* Support for HTTP trailers.
* `HttpServletRequest.getServletMapping()`
* `ServletContext.getSessionTimeout() and setSessionTimeout()`
* `ServletContext.addJspFile()`
* Support for new elements in `web.xml`:
** `default-context-path`
** `request-character-encoding`
** `response-character-encoding`

To enable the Servlet 4.0 feature, add the feature definition to your `server.xml`:

[source,xml]
----

<featureManager>
    <feature>servlet-4.0</feature>
</featureManager>

----

For more info:

* https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_config_servlet40.html[Servlet 4.0 (Knowledge Center)]
* https://javaee.github.io/servlet-spec/[Java Servlet spec]

[#http2]
== HTTP/2 protocol support

HTTP/2 is an optimization of the HTTP/1.1 protocol.  Use of the HTTP/2 protocol is initiated by the client and accepted by the server.  Web applications that involve numerous HTTP/1.1 sessions per webpage can see a significant performance improvement by opting into HTTP/2.  Much of the optimization is achieved by allowing multiple HTTP/1.1 sessions to be transacted in parallel over one initial upgraded HTTP/1.1 connection.

Secure HTTP/2 (h2) uses ALPN (Application-Layer Protocol Negotiation) to upgrade the protocol of an HTTP/1.1 session to HTTP/2.  Insecure HTTP/2 (h2c) can be negotiated via an HTTP/1.1 Upgrade header.  The HTTP/2 protocol then allows for full-duplex communication of HTTP/1.1 traffic between client and server over this one upgraded connection.  Both client and server have to opt into the HTTP/2 protocol with the ALPN handshake being initiated by the client. 

Servlet 4.0 makes use of the HTTP/2 protocol to implement the Servlet 4.0 Server Push APIs, and HTTP/2 is enabled when the Servlet 4.0 Liberty feature is enabled.

If the Servlet 3.1 Liberty feature is enabled instead of Servlet 4.0, HTTP/2 is off by default but can be enabled by setting the `protocolVersion = "http/2"` attribute of the `httpEndpoint` element.

For more info, see:

* https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/cwlp_servlet40_http2.html[HTTP/2 in Servlet 4.0 (Knowledge Center)]
* https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/cwlp_alpnsupport.html[ALPN support (Knowledge Center)]
* https://tools.ietf.org/html/rfc7540[HTTP protocol specification]
* https://jcp.org/en/jsr/detail?id=369[Servlet 4.0 specification]


[#jsf]
== Build user interfaces for web application with JavaServer Faces (JSF) 2.3

Take advantage of the latest JSF features and enhancements. The `jsf-2.3` feature pulls in the Apache MyFaces implementation and integrates it into the Liberty runtime. The new JSF 2.3 capabilities include:

* `<f:importConstants/>`
* Enhanced component search facility
* DataModel implementions can be registered
* CDI replacement for `@ManagedProperty`
* UIData and `<ui:repeat>` support for Map and Iterable
* `<ui:repeat>` condition check
* Java Time support
* WebSocket integration using `<f:websocket>`
* Multi-field validation using `<f:validateWholeBean>`
* Use CDI for evaluation of JSF-specific Expression Language implicit objects
* Support `@Inject` on JSF-specific artifacts
* Ajax Method Invocation. See vdldoc for `<h:commandScript>`
* Add `PartialViewContext.getEvalScripts()` method which returns a mutable list of scripts

With the delivery of JSF 2.3 you can also use your own JSF 2.3 implementation using the `jsfContainer-2.3` feature.

To enable the JSF 2.3 feature, add the feature definition to your `server.xml`:

[source,xml]
----

           <featureManager>
                  <feature>jsf-2.3</feature>
          </featureManager>

----

The CDI 2.0 feature is now available (`cdi-2.0`) and should be used with the `jsf-2.3` feature.

For more info:

* https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_config_jsf23.html[JSF 2.3 (Knowledge Center)]
* https://myfaces.apache.org/[Apache MyFaces]
* https://javaee.github.io/javaserverfaces-spec/[JSF 2.3 spec]





[#jpa]
== Interact with databases with Java Persistence API (JPA) 2.2

Java 8 introduced a new Date and Time API, which is more powerful than the old APIs part of java.util for years.  Collection streaming, introduced in Java 8, is now formally supported by the JPA 2.2 specification, enabling new ways to process query result sets.  Many JPA annotations are now repeatable, eliminating the need to use grouping annotations. 

To enable the JPA 2.2 feature, add the feature definition to your `server.xml`:

[source,xml]
----

           <featureManager>
                  <feature>jpa-2.2</feature>
          </featureManager>

----

This enables JPA 2.2 and the EclipseLink 2.7 JPA persistence provider that is bundled with the feature.  If you prefer to use your own EclipseLink 2.7 binaries, you can instead enable the `<feature>jpaContainer-2.2</feature>` feature, which provides JPA 2.2 container integration but does not enable the provided EclipseLink JPA provider implementation.

Examples of JPA 2.2 Enhancements:


=== @Repeatable Annotations

Before JPA 2.2:

[source,java]
----

@PersistenceContexts(
  @PersistenceContext(name=“foo”, unitName=“bar”),
  @PersistenceContext(name=“cloud”, unitName=“sky”))
@Stateless
public class SomeEJB {
…

----

With JPA 2.2:

[source,java]
----

@PersistenceContext(name=“foo”, unitName=“bar”),
@PersistenceContext(name=“cloud”, unitName=“sky”)
@Stateless
public class SomeEJB {
…

----

=== JPA 2.2 Supports java.time Types

[source,java]
----

@Entity
public class MyEntity {

…(truncated)…
EXPERIMENT - 1.asc · 3043 B · ext .asc · seen 60× in SWH
via fallback
swh:1:cnt:3d37ed8c4eea8efd3619f29a6615643366915bde;origin=https://github.com/Harsh-Avinash/DLD-Lab-Simulations;anchor=swh:1:rev:febf332b496121e810c191df025f22db7f9742a4;path=/EXPERIMENT - 1.asc
Open in SWH · Raw bytes (SWH) · GitHub raw
Show source
Version 4
SHEET 1 1036 932
WIRE 592 48 560 48
WIRE 48 64 0 64
WIRE 176 64 48 64
WIRE 560 64 560 48
WIRE 560 64 512 64
WIRE 672 64 656 64
WIRE 256 80 240 80
WIRE 560 80 560 64
WIRE 592 80 560 80
WIRE 176 96 160 96
WIRE 672 96 672 64
WIRE 688 96 672 96
WIRE 784 96 768 96
WIRE 48 112 48 64
WIRE 80 112 48 112
WIRE 256 112 256 80
WIRE 272 112 256 112
WIRE 768 112 768 96
WIRE 768 112 752 112
WIRE 880 112 848 112
WIRE 160 128 160 96
WIRE 160 128 144 128
WIRE 368 128 336 128
WIRE 688 128 672 128
WIRE 768 128 768 112
WIRE 784 128 768 128
WIRE 80 144 48 144
WIRE 272 144 256 144
WIRE 592 144 560 144
WIRE 160 160 160 128
WIRE 176 160 160 160
WIRE 560 160 560 144
WIRE 560 160 512 160
WIRE 672 160 672 128
WIRE 672 160 656 160
WIRE 256 176 256 144
WIRE 256 176 240 176
WIRE 560 176 560 160
WIRE 592 176 560 176
WIRE -336 192 -336 128
WIRE -256 192 -256 128
WIRE 48 192 48 144
WIRE 48 192 0 192
WIRE 176 192 48 192
WIRE 576 272 528 272
WIRE 656 288 640 288
WIRE 528 304 528 272
WIRE 528 304 496 304
WIRE 576 304 528 304
WIRE -336 320 -336 272
WIRE -256 320 -256 272
WIRE 656 320 656 288
WIRE 672 320 656 320
WIRE 752 336 736 336
WIRE 672 352 656 352
WIRE 544 368 496 368
WIRE 576 368 544 368
WIRE 752 368 752 336
WIRE 784 368 752 368
WIRE 656 384 656 352
WIRE 656 384 640 384
WIRE 864 384 848 384
WIRE 544 400 544 368
WIRE 576 400 544 400
WIRE 784 400 752 400
WIRE 544 432 544 400
WIRE 672 432 544 432
WIRE 752 448 752 400
WIRE 752 448 736 448
WIRE 528 464 528 304
WIRE 672 464 528 464
FLAG -336 320 0
FLAG -256 320 0
FLAG -336 128 Aa
IOPIN -336 128 Out
FLAG -256 128 Ba
IOPIN -256 128 Out
FLAG 0 64 Aa
IOPIN 0 64 In
FLAG 512 64 Aa
IOPIN 512 64 In
FLAG 496 304 Aa
IOPIN 496 304 In
FLAG 0 192 Ba
IOPIN 0 192 In
FLAG 496 368 Ba
IOPIN 496 368 In
FLAG 512 160 Ba
IOPIN 512 160 In
FLAG 368 128 Qa
IOPIN 368 128 Out
FLAG 880 112 Wa
IOPIN 880 112 Out
FLAG 864 384 Xa
IOPIN 864 384 Out
SYMBOL DigitalLogic\\AND_2 112 128 R0
SYMATTR InstName U1
SYMBOL DigitalLogic\\AND_2 208 80 R0
SYMATTR InstName U2
SYMBOL DigitalLogic\\AND_2 208 176 R0
SYMATTR InstName U3
SYMBOL DigitalLogic\\AND_2 304 128 R0
SYMATTR InstName U4
SYMBOL DigitalLogic\\OR_2 624 64 R0
SYMATTR InstName U9
SYMBOL DigitalLogic\\OR_2 624 160 R0
SYMATTR InstName U10
SYMBOL DigitalLogic\\OR_2 720 112 R0
SYMATTR InstName U11
SYMBOL DigitalLogic\\OR_2 816 112 R0
SYMATTR InstName U12
SYMBOL DigitalLogic\\NOR_2 608 288 R0
SYMATTR InstName U13
SYMBOL DigitalLogic\\NOR_2 608 384 R0
SYMATTR InstName U14
SYMBOL DigitalLogic\\NOR_2 704 336 R0
SYMATTR InstName U15
SYMBOL DigitalLogic\\NOR_2 704 448 R0
SYMATTR InstName U16
SYMBOL DigitalLogic\\NOR_2 816 384 R0
SYMATTR InstName U17
SYMBOL voltage -336 176 R0
WINDOW 3 -96 181 Left 2
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR Value PULSE(0 5 0 1n 1n 1m 2m)
SYMATTR InstName V1
SYMBOL voltage -256 176 R0
WINDOW 3 -175 207 Left 2
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR Value PULSE(0 5 0 1n 1n 4m 8m)
SYMATTR InstName V2
TEXT -336 608 Left 2 !.tran 10m
TEXT 160 224 Left 2 !XOR
TEXT 648 216 Left 2 !NAND
TEXT 648 512 Left 2 !XOR

Disambiguation rules

Linguist heuristic rules that predict this language when one of its claimed extensions is shared with another.
RuleExtKindPredicates (truncated)
h/linguist/.asc/1.ascpredicates[{"kind": "any", "regexes": ["^[=-]+\\s|\\{\\{[A-Za-z]"]}]

Contribute — propose a file extension

Tell us where to find evidence about AsciiDoc (mapped to pl/asciidoc). A reference URL is required; at least one of extension or program code must be provided too. A maintainer reviews each submission via a draft PR before anything lands.
Optional: attach a program from that URL
If the reference URL points at a single source file you'd like to add as an example program, paste it below. The workflow will write it under languages/AsciiDoc/programs/<sha>/. Keep under ~200 lines.
(or open the pre-filled issue directly)
← ascii-armor AsciiDots →