{"id":806,"date":"2020-04-12T15:49:42","date_gmt":"2020-04-12T13:49:42","guid":{"rendered":"http:\/\/ondro.inginea.eu\/?p=806"},"modified":"2021-11-07T04:36:56","modified_gmt":"2021-11-07T03:36:56","slug":"possible-ways-to-use-arquillian-in-jakarta-ee-tcks","status":"publish","type":"post","link":"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/","title":{"rendered":"Possible ways to use Arquillian in Jakarta EE TCKs"},"content":{"rendered":"\n<p>Recently, we had <a href=\"https:\/\/www.eclipse.org\/lists\/jakartabatch-dev\/msg00053.html\">a discussion<\/a> how to create a standalone Jakarta Batch test kit (TCK). For most of the committers, it&#8217;s pretty natural to use <a href=\"http:\/\/arquillian.org\/\">Arquillian<\/a> to abstracts tests away from how they are executed on an implementation. But <a href=\"https:\/\/twitter.com\/rmannibucau\">Romain<\/a> proposed an intriguing idea to use plain JUnit5 that got me thinking. And it didn&#8217;t stop with thinking. After a few hours of hacking, I&#8217;m now able to present a proof of concept and suggest how we could use plain JUnit5 for the TCK and also how containers can be integrated with it using good old Arquillian to avoid reinventing the wheel.<\/p>\n\n\n\n<!--more-->\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>UPDATE: The Arquillian project has moved forward and it now supports JUnit5 with <a href=\"https:\/\/search.maven.org\/classic\/#search%7Cga%7C1%7Cg%3A%22org.jboss.arquillian.junit5%22\">an official extension<\/a>. This makes it even easier to combine Arqullian with JUnit5. I&#8217;ve updated my article to refer to this official extension.<\/p><\/blockquote>\n\n\n\n<p>The problem with the current standalone Batch TCK is that it&#8217;s based on <a href=\"https:\/\/testng.org\/\">TestNG<\/a> and only supports Batch implementations that run on the same classpath as the test suite. Therefore it doesn&#8217;t support running tests in Java containers like application servers. Such containers are now supported only by the Jakarta test suite (CTS) which contains a copy of Batch TCK tests uses a proprietary technology to run tests in containers.<\/p>\n\n\n\n<p>There are other Jakarta EE specifications with a standalone TCK or with plans to create it:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/github.com\/eclipse-ee4j\/cdi-tck\">CDI TCK<\/a> &#8211; uses TestNG with Arquillian<\/li><li><a href=\"https:\/\/github.com\/eclipse-ee4j\/beanvalidation-tck\">Bean Validation<\/a> &#8211; uses TestNG with Arquillian<\/li><li><a href=\"https:\/\/github.com\/eclipse-ee4j\/jsonb-api\/tree\/master\/tck\">JSON-B<\/a> &#8211; in progress, uses JUnit 4 with Arquillian<\/li><li><a href=\"https:\/\/github.com\/eclipse-ee4j\/injection-tck\/\">DI TCK<\/a> &#8211; JUnit 4<\/li><\/ul>\n\n\n\n<p>It&#8217;s clear that Arquillian is pretty popular among them. Only DI TCK doesn&#8217;t use it. But DI TCK also doesn&#8217;t support execution in a remote container natively, it only supports setting up a local container, e.g. using the CDI SE API if the implementation supports it.<\/p>\n\n\n\n<p>I had 3 goals with my proof of concept:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>improve the TCK to make it possible to integrate with a Java container<\/li><li>adapt the existing example project to run JBatch with the TCK<\/li><li>create another example of integrating the TCK with a typical Jakarta EE server such as Payara Server<\/li><\/ol>\n\n\n\n<p>I prefer gradual evolution rather than big bang development if it makes sense. And I realized that I will probably need Arquillian to integrate with Payara Server for my third goal anyway, even if I find a solution using JUnit 5. So I started with adding support for Arquillian into the current Batch TCK and later I hoped to reuse it to integrate Payara Server with JUnit 5. It turned out that it was a good approach and no code went to waste.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Adding support for Arqullian<\/h2>\n\n\n\n<p>Adding support for Arquillian into the Batch TCK was pretty straightforward because the tests already use TestNG and Arquillian supports TestNG out of the box. The only tricky part was to create a deployment package for each test which is required by Arquillian. In the end, this was pretty easy and required no modification of the test sources. Arquillian allows to create an extension to define a deployment package for each test so I was able to move creation of a deployment package to a separate extension. This extension can be used by implementations that need to run the tests in a container but it&#8217;s not needed in the TCK itself.<\/p>\n\n\n\n<p>The only change needed in the TCK was to change each test to extend the Arquillian TestNG base class and that was it. <\/p>\n\n\n\n<p>On top of the test suite, the Batch TCK contains an example TCK runner project that runs the TCK against the <a href=\"https:\/\/github.com\/WASdev\/standards.jsr352.jbatch\">JBatch<\/a> implementation. This also needed to be changed slightly. I added Arquillian Weld SE connector, which runs the Arquillian TestNG tests in a Weld CDI container. This means the tests are executed on the same classpath as the test suite and no Arquillian deployment is needed. <\/p>\n\n\n\n<p>You can see the end result in my fork here: <a href=\"https:\/\/github.com\/OndroMih\/batch-tck\/pull\/4\">https:\/\/github.com\/OndroMih\/batch-tck\/pull\/4<\/a>. In summary, I added a single line of code to each TCK test and modified pom.xml of the Batch TCK and the TCK runner for JBatch.<\/p>\n\n\n\n<p>This allowed me to create <a href=\"https:\/\/github.com\/OndroMih\/Payara-Batch-TCK-Runner\/tree\/poc-arquillian\">an example project<\/a> for running the TCK with a remote server like Payara Server. This example project contains the Arquillian extension I mentioned above. This extension uses Maven resolver library to resolve JAR dependencies from the project&#8217;s pom.xml file and package them into a WAR deployment for Arquillian. It&#8217;s not complicated, it requires just a few lines of code: <a href=\"https:\/\/github.com\/OndroMih\/Payara-Batch-TCK-Runner\/blob\/poc-arquillian\/jbatch-arquillian-extension\/src\/main\/java\/jbatch\/arquillian\/extension\/MavenTestDependenciesDeploymentPackager.java\">MavenTestDependenciesDeploymentPackager.java<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Converting the TCK to JUnit5<\/h2>\n\n\n\n<p>Converting a TestNG-based TCK to JUnit 5 was pretty straightforward. Besides replacing all TestNG annotations with JUnit 5 equivalents, I also needed to replace TestNG reporting with the standard Java JUL logging. At that time, I didn&#8217;t know that JUnit 5 also supports reporting from tests via <a href=\"https:\/\/junit.org\/junit5\/docs\/current\/api\/org.junit.jupiter.api\/org\/junit\/jupiter\/api\/TestReporter.html\">TestReporter<\/a>. For a final solution, I would use that instead of JUL logging.<\/p>\n\n\n\n<p>You can see the final result of my conversion here: <a href=\"https:\/\/github.com\/OndroMih\/batch-tck\/pull\/3\">https:\/\/github.com\/OndroMih\/batch-tck\/pull\/3<\/a>. The TCK is changed and the JBatch runner project also uses it and runs without test failures. This solves my first 2 goals.<\/p>\n\n\n\n<p>The hardest thing was to connect a JUnit 5 test suite with Payara Server to meet my 3rd goal. For that, I needed to solve the following problems:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>create a deployment package to deploy tests to Payara Server<\/li><li>create a JUnit 5 extension to run the tests in Payara Server and report the results back <\/li><\/ul>\n\n\n\n<p>I already solved the first problem with an Arquillian extension in the previous step. And it seems there&#8217;s an unofficial JUnit 5 extension to run Arquillian tests. And yes, it worked, I was able to merge all this to a final solution for all of my 3 goals.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Running the JUnit 5 TCK with Arquillian<\/h2>\n\n\n\n<p>Luckily, the Arquillian community has been working on <a href=\"https:\/\/github.com\/arquillian\/arquillian-core\/issues\/137\">support for JUnit 5<\/a>. Although this effort was stuck for a while waiting for an essential extension point only added in JUnit 5.5, there&#8217;s now an unofficial <a href=\"https:\/\/github.com\/zforgo\/arquillian-junit5-extension\">arquillian-junit5-extension<\/a> with some fixes in <a href=\"https:\/\/github.com\/dmatej\/arquillian-junit5-extension\">this fork<\/a>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>UPDATE: Arquillian now provides an official <a href=\"https:\/\/search.maven.org\/classic\/#search%7Cga%7C1%7Cg%3A%22org.jboss.arquillian.junit5%22\">JUnit 5 extension<\/a>, which can be used instead. It&#8217;s based on the unofficial extension that I used but is available in Maven Central and contains some additional fixes.<\/p><\/blockquote>\n\n\n\n<p>So I tried to pull all what I already had together to try if I can get the converted JUnit 5 Batch TCK running against Payara Server:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>use the JUnit 5 Batch TCK as a dependency<\/li><li>add the arquillian-junit5-extension<\/li><li>add the Arquillian deployment extension I created earlier<\/li><li>configured Arquillian to run with the Payara connector as I did earlier<\/li><\/ul>\n\n\n\n<p>So I did it, started Payara Server, configured the necessary JDBC resources, and executed the following:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">mvn verify<\/code><\/span><\/pre>\n\n\n<p>&#8230; and prayed.<\/p>\n\n\n\n<p>After a few minues:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Results: \nTests run: 164, Failures: 0, Errors: 0, Skipped: 3<\/code><\/span><\/pre>\n\n\n<p>All worked! This includes all TCK tests, including the tests that require other Jakarta EE functionality and which are not run for standalone Batch implementations like JBatch. Those 3 skipped tests are currently being skipped by the TCK and not by my configuration.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p>I was able to demonstrate there are multiple ways to improve existing standalone Jakarta EE TCKs or create new ones from the full Jakarta CTS suite in a modern way. <\/p>\n\n\n\n<p>One of them is an already proven way of adding Arquillian into a JUnit 4 or TestNG test suite and expect that all implementations provide an Arquillian container to run the tests with them. As demonstrated, this is pretty easy with a few lines of code, writing a simlple Arquillian extension to define deployments for all tests.<\/p>\n\n\n\n<p>But there&#8217;s also an interesting new way which uses JUnit 5, one of the most modern test frameworks for Java. JUnit 5 provides enough extension points and also allows enabling extensions globally for all tests. This means that the tests don&#8217;t need to include any boiler-plate code required to enable the extensions. Implementers can use Arquillian to run the tests via an existing JUnit 5 Arquillian extension once it&#8217;s officially released, or they can create their own JUnit 5 extension to connect the tests with their implementation. Or they are free to use the existing unofficial JUnit 5 Arquillian extension already and even modify it if needed because they can really use anything they want.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently, we had a discussion how to create a standalone Jakarta Batch test kit (TCK). For most of the committers, it&#8217;s pretty natural to use Arquillian to abstracts tests away from how they are executed on an implementation. But Romain proposed an intriguing idea to use plain JUnit5 that got me thinking. And it didn&#8217;t [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[192],"tags":[190,188,83,191,104,189],"series":[],"class_list":["post-806","post","type-post","status-publish","format-standard","hentry","category-jakarta-ee","tag-arquillian","tag-jakartaee","tag-javaee-en","tag-junit5","tag-payara","tag-tck"],"jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Possible ways to use Arquillian in Jakarta EE TCKs - .Lost in Coding<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Possible ways to use Arquillian in Jakarta EE TCKs - .Lost in Coding\" \/>\n<meta property=\"og:description\" content=\"Recently, we had a discussion how to create a standalone Jakarta Batch test kit (TCK). For most of the committers, it&#8217;s pretty natural to use Arquillian to abstracts tests away from how they are executed on an implementation. But Romain proposed an intriguing idea to use plain JUnit5 that got me thinking. And it didn&#8217;t [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/\" \/>\n<meta property=\"og:site_name\" content=\".Lost in Coding\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ondrej.mihalyi\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ondrej.mihalyi\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-12T13:49:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-07T03:36:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2021\/09\/duke-CloudSurf-small-e1637277171314.png?fit=300%2C202&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"202\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ondro Mih\u00e1lyi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/OndroMih\" \/>\n<meta name=\"twitter:site\" content=\"@OndroMih\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ondro Mih\u00e1lyi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/\"},\"author\":{\"name\":\"Ondro Mih\u00e1lyi\",\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616\"},\"headline\":\"Possible ways to use Arquillian in Jakarta EE TCKs\",\"datePublished\":\"2020-04-12T13:49:42+00:00\",\"dateModified\":\"2021-11-07T03:36:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/\"},\"wordCount\":1368,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616\"},\"keywords\":[\"Arquillian\",\"JakartaEE\",\"javaee\",\"JUnit5\",\"Payara\",\"TCK\"],\"articleSection\":[\"Jakarta EE\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/\",\"url\":\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/\",\"name\":\"Possible ways to use Arquillian in Jakarta EE TCKs - .Lost in Coding\",\"isPartOf\":{\"@id\":\"https:\/\/ondro.inginea.eu\/#website\"},\"datePublished\":\"2020-04-12T13:49:42+00:00\",\"dateModified\":\"2021-11-07T03:36:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ondro.inginea.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Possible ways to use Arquillian in Jakarta EE TCKs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ondro.inginea.eu\/#website\",\"url\":\"https:\/\/ondro.inginea.eu\/\",\"name\":\".Lost in Coding\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ondro.inginea.eu\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616\",\"name\":\"Ondro Mih\u00e1lyi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i2.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2017\/08\/fotoOMsquare3x300.jpg?fit=300%2C300&ssl=1\",\"contentUrl\":\"https:\/\/i2.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2017\/08\/fotoOMsquare3x300.jpg?fit=300%2C300&ssl=1\",\"width\":300,\"height\":300,\"caption\":\"Ondro Mih\u00e1lyi\"},\"logo\":{\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/image\/\"},\"description\":\"Ondro is a software developer and consultant specializing in combining standard and proven tools to solve new and challenging problems. He's been developing in Java for over 10 years. He\u2019s worked for clients like Payara, LottoLand, Uniqa and others. He has co-founded OmniFish, where he works as a director and Jakarta EE expert. He\u2019s passionate about helping his clients and the wider Java community with their projects based on Jakarta EE and similar technologies. As an experienced Java developer and instructor, he's helped companies build and educate their development teams and improve their development processes. He's a core member of several opensource projects and Jakarta EE specification projects. He\u2019s a frequent conference speaker, leader of the Czech JUG and a Java Champion. Ondro is a regular conference speaker at international conferences. Since 2016, he's presented at the following conferences: \u2022 FOSDEM, Brussels, Belgium 2023) \u2022 JChampionsConf, Online (year 2023) \u2022 EclipseCon, Germany (year 2022) \u2022 GeeCon, Prague, Czechia (years 2016, 2019, 2022) \u2022 JavaLand, Bruehl, Germany (years 2018, 2021) \u2022 JFokus, Stockholm, Sweden (year 2019) \u2022 Devops Con, Munich, Germany (year 2019) \u2022 Oracle CodeOne, San Francisco, USA (years 2018, 2019) \u2022 Devoxx, Antwerp, Belgium (year 2018) \u2022 JPrime, Sofia, Bulgaria (years 2017, 2018) \u2022 Java2Days, Sofia, Bulgaria (years 2016, 2018) \u2022 EclipseCon, France (year 2018) \u2022 JavaOne, San Francisco, USA (years 2016, 2017) \u2022 Oracle Code, Prague, Czechia (year 2017) \u2022 Devoxx, London, UK (year 2017) \u2022 GeeCon, Krakow, Poland (year 2017) \u2022 W-JAX, Munich, Germany (years 2016, 2017) \u2022 Bed-Con, Berlin, Germany (year 2017) \u2022 Oredev, Malmo, Sweden (year 2017) \u2022 Devoxx, Casablanca, Morocco (year 2017) \u2022 Java Developer Days, Krakow, Poland (year 2016)\",\"sameAs\":[\"https:\/\/www.facebook.com\/ondrej.mihalyi\",\"https:\/\/cz.linkedin.com\/in\/mihalyiondrej\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/OndroMih\"],\"url\":\"https:\/\/ondro.inginea.eu\/index.php\/author\/ondrejm\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Possible ways to use Arquillian in Jakarta EE TCKs - .Lost in Coding","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/","og_locale":"en_US","og_type":"article","og_title":"Possible ways to use Arquillian in Jakarta EE TCKs - .Lost in Coding","og_description":"Recently, we had a discussion how to create a standalone Jakarta Batch test kit (TCK). For most of the committers, it&#8217;s pretty natural to use Arquillian to abstracts tests away from how they are executed on an implementation. But Romain proposed an intriguing idea to use plain JUnit5 that got me thinking. And it didn&#8217;t [&hellip;]","og_url":"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/","og_site_name":".Lost in Coding","article_publisher":"https:\/\/www.facebook.com\/ondrej.mihalyi","article_author":"https:\/\/www.facebook.com\/ondrej.mihalyi","article_published_time":"2020-04-12T13:49:42+00:00","article_modified_time":"2021-11-07T03:36:56+00:00","og_image":[{"width":300,"height":202,"url":"https:\/\/i0.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2021\/09\/duke-CloudSurf-small-e1637277171314.png?fit=300%2C202&ssl=1","type":"image\/png"}],"author":"Ondro Mih\u00e1lyi","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/OndroMih","twitter_site":"@OndroMih","twitter_misc":{"Written by":"Ondro Mih\u00e1lyi","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/#article","isPartOf":{"@id":"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/"},"author":{"name":"Ondro Mih\u00e1lyi","@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616"},"headline":"Possible ways to use Arquillian in Jakarta EE TCKs","datePublished":"2020-04-12T13:49:42+00:00","dateModified":"2021-11-07T03:36:56+00:00","mainEntityOfPage":{"@id":"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/"},"wordCount":1368,"commentCount":0,"publisher":{"@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616"},"keywords":["Arquillian","JakartaEE","javaee","JUnit5","Payara","TCK"],"articleSection":["Jakarta EE"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/","url":"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/","name":"Possible ways to use Arquillian in Jakarta EE TCKs - .Lost in Coding","isPartOf":{"@id":"https:\/\/ondro.inginea.eu\/#website"},"datePublished":"2020-04-12T13:49:42+00:00","dateModified":"2021-11-07T03:36:56+00:00","breadcrumb":{"@id":"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ondro.inginea.eu\/index.php\/possible-ways-to-use-arquillian-in-jakarta-ee-tcks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ondro.inginea.eu\/"},{"@type":"ListItem","position":2,"name":"Possible ways to use Arquillian in Jakarta EE TCKs"}]},{"@type":"WebSite","@id":"https:\/\/ondro.inginea.eu\/#website","url":"https:\/\/ondro.inginea.eu\/","name":".Lost in Coding","description":"","publisher":{"@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ondro.inginea.eu\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616","name":"Ondro Mih\u00e1lyi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/image\/","url":"https:\/\/i2.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2017\/08\/fotoOMsquare3x300.jpg?fit=300%2C300&ssl=1","contentUrl":"https:\/\/i2.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2017\/08\/fotoOMsquare3x300.jpg?fit=300%2C300&ssl=1","width":300,"height":300,"caption":"Ondro Mih\u00e1lyi"},"logo":{"@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/image\/"},"description":"Ondro is a software developer and consultant specializing in combining standard and proven tools to solve new and challenging problems. He's been developing in Java for over 10 years. He\u2019s worked for clients like Payara, LottoLand, Uniqa and others. He has co-founded OmniFish, where he works as a director and Jakarta EE expert. He\u2019s passionate about helping his clients and the wider Java community with their projects based on Jakarta EE and similar technologies. As an experienced Java developer and instructor, he's helped companies build and educate their development teams and improve their development processes. He's a core member of several opensource projects and Jakarta EE specification projects. He\u2019s a frequent conference speaker, leader of the Czech JUG and a Java Champion. Ondro is a regular conference speaker at international conferences. Since 2016, he's presented at the following conferences: \u2022 FOSDEM, Brussels, Belgium 2023) \u2022 JChampionsConf, Online (year 2023) \u2022 EclipseCon, Germany (year 2022) \u2022 GeeCon, Prague, Czechia (years 2016, 2019, 2022) \u2022 JavaLand, Bruehl, Germany (years 2018, 2021) \u2022 JFokus, Stockholm, Sweden (year 2019) \u2022 Devops Con, Munich, Germany (year 2019) \u2022 Oracle CodeOne, San Francisco, USA (years 2018, 2019) \u2022 Devoxx, Antwerp, Belgium (year 2018) \u2022 JPrime, Sofia, Bulgaria (years 2017, 2018) \u2022 Java2Days, Sofia, Bulgaria (years 2016, 2018) \u2022 EclipseCon, France (year 2018) \u2022 JavaOne, San Francisco, USA (years 2016, 2017) \u2022 Oracle Code, Prague, Czechia (year 2017) \u2022 Devoxx, London, UK (year 2017) \u2022 GeeCon, Krakow, Poland (year 2017) \u2022 W-JAX, Munich, Germany (years 2016, 2017) \u2022 Bed-Con, Berlin, Germany (year 2017) \u2022 Oredev, Malmo, Sweden (year 2017) \u2022 Devoxx, Casablanca, Morocco (year 2017) \u2022 Java Developer Days, Krakow, Poland (year 2016)","sameAs":["https:\/\/www.facebook.com\/ondrej.mihalyi","https:\/\/cz.linkedin.com\/in\/mihalyiondrej","https:\/\/twitter.com\/https:\/\/twitter.com\/OndroMih"],"url":"https:\/\/ondro.inginea.eu\/index.php\/author\/ondrejm\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6wlb6-d0","jetpack-related-posts":[{"id":877,"url":"https:\/\/ondro.inginea.eu\/index.php\/jakarta-ee-experts-at-eclipsecon-2021\/","url_meta":{"origin":806,"position":0},"title":"Jakarta EE experts at EclipseCon 2021","author":"Ondro Mih\u00e1lyi","date":"23 August, 2021","format":false,"excerpt":"EclipseCon conference is a great event for all Java developers, especially those who are passionate about and believe in opensource. The conference is scheduled for 26-28 October 2021. I wholeheartedly recommend to attend it. It's a free online event, you just need to register to attend: https:\/\/www.eclipsecon.org\/2021 Specifically for users\u2026","rel":"","context":"In &quot;Events &amp; Conferences&quot;","block_context":{"text":"Events &amp; Conferences","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/events-conferences\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":998,"url":"https:\/\/ondro.inginea.eu\/index.php\/introduction-to-concurrency-and-threads-in-java-web-apps\/","url_meta":{"origin":806,"position":1},"title":"Introduction to concurrency and threads in Java web apps","author":"Ondro Mih\u00e1lyi","date":"3 July, 2022","format":false,"excerpt":"Threads, concurrency, or synchronization are not very easy to understand concepts. Jakarta EE builds on standard Java features and makes them easier to understand and use, using the thread pool concept and the Jakarta Concurrency API.","rel":"","context":"In &quot;Jakarta EE&quot;","block_context":{"text":"Jakarta EE","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/java\/jakarta-ee\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":931,"url":"https:\/\/ondro.inginea.eu\/index.php\/get-user-info-in-jakarta-ee\/","url_meta":{"origin":806,"position":2},"title":"Get logged-in user info in Jakarta EE &#8211; the simplest way","author":"Ondro Mih\u00e1lyi","date":"13 November, 2021","format":false,"excerpt":"The security before Java EE 8 \/ Jakarta EE 8 used to be a bit complicated and confusing. Every specification provided its own way to retrieve information about the logged-in user. The situation greatly improved with the introduction of the Security API that provides a unified way to do that\u2026","rel":"","context":"In &quot;Security&quot;","block_context":{"text":"Security","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/java\/jakarta-ee\/ee-security\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":910,"url":"https:\/\/ondro.inginea.eu\/index.php\/portable-cdi-injection-into-jax-rs-sub-resources\/","url_meta":{"origin":806,"position":3},"title":"How to properly inject CDI beans into JAX-RS sub-resources","author":"Ondro Mih\u00e1lyi","date":"26 October, 2021","format":false,"excerpt":"Jakarta REST (JAX-RS) defines it's own dependency injection using the @Context annotation. REST resources also support CDI injection if you enable CDI on the REST resource class (e.g. using a bean-defining annotation like @RequestScoped). But injection doesn't work out of the box on JAX-RS sub-resources. How to create sub-resources so\u2026","rel":"","context":"In &quot;REST&quot;","block_context":{"text":"REST","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/java\/jakarta-ee\/ee-rest\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":209,"url":"https:\/\/ondro.inginea.eu\/index.php\/mvc-1-0-in-java-ee-8-getting-started-using-facelets\/","url_meta":{"origin":806,"position":4},"title":"MVC 1.0 in Java EE 8: Getting started using facelets","author":"Ondro Mih\u00e1lyi","date":"19 January, 2016","format":false,"excerpt":"MVC 1.0 is an action-based Model-View-Controller web framework, which will be a part of future Java EE 8. It will live side by side with component-based JSF framework and will provide an alternative for building HTML+javascript oriented applications with full control over URLs. This post summarizes what needs to be\u2026","rel":"","context":"In &quot;Jakarta EE&quot;","block_context":{"text":"Jakarta EE","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/java\/jakarta-ee\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":172,"url":"https:\/\/ondro.inginea.eu\/index.php\/jpql-enhancements-in-jpa-2-1-and-java-ee-7-part-1\/","url_meta":{"origin":806,"position":5},"title":"JPQL Enhancements in JPA 2.1 and Java EE 7 &#8211; JOIN ON","author":"Ondro Mih\u00e1lyi","date":"22 February, 2016","format":false,"excerpt":"Java EE 7 is around for a few years already, and provides several very useful and long-awaited features, like entity graphs and better support for stored procedures and results mapping. For an overview, have a look at Thorben Janssen's blog post. The query capabilities were also enhanced, with 3 additional\u2026","rel":"","context":"In &quot;Jakarta EE&quot;","block_context":{"text":"Jakarta EE","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/java\/jakarta-ee\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2016\/02\/java-persistence-api-jpa-step-by-step-4-728.jpg?fit=596%2C447&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/posts\/806"}],"collection":[{"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/comments?post=806"}],"version-history":[{"count":4,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/posts\/806\/revisions"}],"predecessor-version":[{"id":873,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/posts\/806\/revisions\/873"}],"wp:attachment":[{"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/media?parent=806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/categories?post=806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/tags?post=806"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/series?post=806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}