There are quite a number of Java EE implementations. At the open source front JBoss, GlassFish and increasingly TomEE are very well known. On the commercial side there's WebLogic, WebSphere and increasingly Liberty that are rather well known as well.

A couple of implementations are somewhat less known such as Resin and Geronimo/WASCE, but you'd expect many advanced Java EE developers to have heard of those. Yet another implementation is JOnAS, which arguably is much less known.

Then however, there are also the truly obscure (in the sense of not widely known) ones such as TMax JEUS, Fujitsu Interstage Application Server, Hitachi uCosminexus Application Server and NEC WebOTX Application Server. These seem to be virtually unknown among general Java EE users. The only way I found out that these servers even existed was because of them being mentioned on Oracle's Java EE compatibility page.

The most famous of these unknown servers is JEUS; every ~3 years it makes it into the news as the first server after the RI (GlassFish) to be certified for the new Java EE version. Considering that JEUS is a full Java EE implementation this no small feat. Now Applications Servers have it somewhat easier these days as they rarely have to implement any of the major sub-specs like JSF, CDI, JPA, Bean Validation, etc themselves but can instead choose from one of the readily available open source implementations. Still, there's a lot of extra work into building a complete AS out of them, and for some sub-specs like e.g. JASPIC there isn't a really reusable (open source) implementation available.

As I'm somewhat in the business of testing JASPIC implementations and JEUS should probably ship with its own independent JASPIC implementation, plus the fact that we want to test OmniFaces on as many servers as possible, I found it to be interesting to take a deeper look at it.

The first thing I found out is that JEUS really is obscure. Besides some news articles that JEUS is the first AS to be Java EE 7 certified, there's hardly anything to be found. On StackOverflow for example when you search for "JBoss" there are about 26000 results. Searching for "GlassFish" yields about 16500 results. Searching for "JEUS" however has... 3 results, of which 2 from the same user. Searching on Google gives some results, but nearly all of them are in Korean. The very few (old) posts in English are written by someone who judging by his name is also Korean.

Clearly JEUS is thus very much a Korean thing. It might well be that JEUS enjoys enormous popularity in Korea, but for some reason this popularity doesn't really extend beyond Korea. As mentioned JEUS doesn't really exist on StackOverflow, I've never seen it being mentioned on forums, or in discussions on the various Java (EE) mailing lists (although occasionally TMaxSoft experts do post) and at OmniFaces we have never received any question or bug reports from a JEUS user. The Eclipse marketplace does not carry any plug-in for JEUS and it's not listed among the servers in the "download additional server adapters" dialog either. Yet logic dictates that there must be some user base that justifies the colossal investment of developing and maintaining a full Java EE implementation.

Downloading JEUS proved to be a bit troublesome. There's a company site at tmaxsoft.com, but this is the typical corporate website that contains some nice projections and customer testimonials (indeed mainly Korean companies again) without any real technical information or any kind of download link. Frustrating is that despite the site being composed of static documents, it uses JavaScript to put new content on a page making it impossible to link to anything. Even worse is that a number of links just don't seem to work. At the JEUS section (to which I can't link because of the js issue), there's a link to download the brochure, but after clicking on it simply nothing happens. I tried to register from the JEUS section and got directed to an actual URL (http://tmaxsoft.com/jsp/popup/info_reg.jsp), but after filling out the form nothing happened. When trying to register from the index page I got redirected to another URL (http://tmaxsoft.com/member/memberRegister.do?strMode=INSERT&join_gubun=web) which presented a rather similar but still different form. After I filled this one out I was rewarded with a friendly confirmation: Register has been completed. Please authentication with your email address which is registerd when you signing up. But when I did just that, a got a somewhat less friendly message: this ID has not been certificated with your e-mail for register yet. Besides the not entirely correct usage of English (which is a sin I also not rarely commit despite being partially of English descent), this was all not really encouraging.

After some Googling, I stumbled upon another TMaxSoft site, a proper technical one this time: technet.tmax.co.kr :) Unfortunately it's all in Korean. You can change to English, but that gives you a rather different site instead: technet.tmaxsoft.com. Luckily Google Translate does a fairly decent job. Reading the content it's weird that for an application server that always wins the certification race for a new Java EE version, the overall description of the server is about J2EE 1.3 features! :( At the bottom of the document it goes on to describe that JEUS 4.2 is compatible with J2EE 1.3, and not a word about JEUS 7 (Java EE 6) let alone JEUS 8 (Java EE 7).

Registering again via this site using the translated Korean version however finally did work! I could now access a download page, which offered me to download JEUS 5 (J2EE 1.4) and JEUS 6 (Java EE 5). After browsing some more through the site I found a JEUS 4.x Development Guide (which should be over a decade old), and clicking on the online manual brought up some JEUS 5 docs (nearly a decade old), and when downloading the manual I would get something for JEUS 6 (still some 6 years old). I checked the JEUS section of their corporate Chinese site, but it too has JEUS 6 listed as the latest version. From here I could downloaded the brochure, but it doesn't say much. There are links to a US site, but the domain seems to be gone. Some clever fiddling with the URL of the online manual at the Korean site revealed that the JEUS 7 online manual is in fact there, namely at technet.tmax.co.kr/kr/edocs/jeus/70/index.html. Why this isn't linked as the default (is it even linked from somewhere at all?) is beyond me.

Just to be sure I also tried the English technet.tmaxsoft.com. Curiously, I had to register again for this one (it really is a separate site). Unfortunately, here too the latest JEUS version that can be downloaded from the Trial Versions section is JEUS 6 and the latest manual is again JEUS 6. Even stranger is that the US version of the TMaxSoft site apparently did mention JEUS 7 and had some clear download links for a jeus60_unix_generic_en.bin and jeus70_linux_x86.bin, according to an archived capture of the domain when it was still up.

This all didn't exactly boost my confidence in JEUS. How can they be the first with a new Java EE version all the time, yet have a website that seems stuck years in the past and inconsistently presents me documentation about different (ancient) versions? It just didn't make a whole lot of sense. At any length the JEUS 7 manual that I found seemed fairly professional and thorough, but it's mainly about the classic Java EE stuff (Servlet, JSP, EJB (including CMP!), JCA, etc). I didn't see JSF and CDI being mentioned anywhere, but it does cover JPA.

After some more Googling I finally landed on a developer preview page at the corporate site again that did contain a direct download link for JEUS 8. ( Again, I wonder why this isn't directly linked from the tech site, and why it isn't on the main download page. ) Via this I got a 160.5MB large file called jeus80_unix_generic_ko.bin. The first few hundred lines of this file are a shell script that starts some Java based installer that extracts itself. It's a clever trick to have a one file kind of universal installer. Unfortunately it wouldn't run on OS X: Preparing to install... Extracting the installation resources from the installer archive... Configuring the installer for this system's environment... Launching installer... Preparing CONSOLE Mode Installation... =============================================================================== JEUS8.0 (created with InstallAnywhere by Macrovision) ------------------------------------------------------------------------------- The installer cannot run on your configuration. It will now quit. Luckily I have an Ubuntu machine as well, on which the install did work: Introduction ------------ InstallAnywhere will guide you through the installation of JEUS8.0. It is strongly recommended that you quit all programs before continuing with this installation. I was of course not going to quit all programs (does anyone seriously do this???) and continued. After accepting the license I could choose a platform: Choose Platform --------------- Choose the operating system and architecture : 1)HP-UX PA-RISC 2)HP-UX Itanium 3)Solaris UltraSPARC 4)Solaris x86 5)Solaris x64 6)AIX 5.x, 6.x, 7.x PowerPC 7)Linux Itanium 8)Linux x86 9)Linux x64 Quit) Quit Installer Choose Current System (DEFAULT: 9): And after asking for an installation folder I could choose a type (?): Installation type ----------------- Please choose the Install Set to be installed by this installer. ->1- Domain Admin Server 2- Managed Server ENTER THE NUMBER FOR THE INSTALL SET, OR PRESS TO ACCEPT THE DEFAULT As I have no idea what the difference is, I went for the default. After that it asked me for an installation type (production/dev), for a JDK path (interestingly it only accepted a JDK 7 version), an administrator password (it wanted a minimal length and some numbers, I choose "admin007" and a "domain" name (I went for the default "jeus_domain"). This installed 207MB in a folder, with the following layout: bin docs lib nodemanager setup ThirdPartyLicenses.txt derby domains license readme.txt templates UninstallerData Interestingly setup/lib_native had the following content: aix5l_32 hp-ux_64 linux_ia64 linux_x86_32 sunos_32 sunos_x86 aix5l_64 hp-ux_ia64_32 linux_ppc_32 linux_x86_64 sunos_64 win32 hp-ux_32 hp-ux_ia64_64 linux_ppc_64 mac sunos_x64 win64 Note the presence of the mac folder! While setup/bin only contains "binaries" for win and unix, the actual binaries are just shell scripts. E.g. /bin/startDomainAdminServer contains this as its most important part: #!/bin/sh [...] # execute jeus with echo set -x "${JAVA_HOME}/bin/java" $VM_OPTION $SESSION_MEM \ -Xbootclasspath/p:"${JEUS_HOME}/lib/system/extension.jar" \ -classpath "${LAUNCHER_CLASSPATH}" \ -Dsun.rmi.dgc.client.gcInterval=3600000 \ -Dsun.rmi.dgc.server.gcInterval=3600000 \ -Djava.library.path="${JEUS_LIBPATH}" \ -Djava.endorsed.dirs="${JEUS_HOME}/lib/endorsed" \ -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory \ -Djava.naming.factory.url.pkgs=jeus.jndi.jns.url \ -Djava.net.preferIPv4Stack=true \ -Djava.util.logging.manager=jeus.util.logging.JeusLogManager \ -Djava.util.logging.config.file="${JEUS_HOME}/bin/logging.properties" \ -Djeus.home="${JEUS_HOME}" \ -Djeus.jvm.version=${VM_TYPE} \ -Djeus.tm.checkReg=true \ -Djeus.properties.replicate=jeus,sun.rmi,java.util,java.net \ ${JAVA_ARGS} \ This all looks like it could possibly run on OS X anyway but I didn't try this for now.

Most of the libraries that make up the server are in lib/system: activation.jar http.jar jeus-omgapi.jar resolver.jar appcompiler.jar jasper.jar jeus-servlet.jar saaj-impl.jar bootstrap.jar javaee.jar jeus-store.jar sasl.jar classmate-0.8.0.jar javax.json.jar jeus-tm.jar serializer.jar com.ibm.jbatch-ri-spi.jar jaxb1-impl.jar jeus-toplink-essentials.jar shoal.jar com.ibm.jbatch-runtime-all.jar jaxb2-basics-runtime.jar jeusutil.jar sigar-1.6.4.jar commons-cli.jar jaxb-impl.jar jeus-websocket.jar sjsxp.jar commons.jar jaxb-xjc.jar jeus-ws.jar snmp_agent.jar corba-asm.jar jaxrpc-impl.jar jline.jar stax-ex.jar corba-codegen.jar jaxrpc-spi.jar jms.jar streambuffer.jar corba-csiv2-idl.jar jaxws-rt.jar jmx-description.jar tmaxjce_jdk15x.jar corba-internal-api.jar jaxws-tools.jar jmxremote.jar TMAX-JEUS7.0-MIB.mib corba-newtimer.jar jboss-logging-3.1.1.GA.jar jmxtools.jar toplink-essentials-agent.jar corba-omgapi.jar jeus-ant-util.jar jsse14_repack.jar toplink-essentials.jar corba-orbgeneric.jar jeusapi.jar jxerces.jar trilead-ssh2.jar corba-orb.jar jeusasm.jar libCUtility.so weld-api.jar deploy.jar jeus-concurrent.jar libJeusNet.so weld-core.jar derby.jar jeus-config.jar libjtiagent.so weld-spi.jar derbynet.jar jeus-console2.jar libNSStream.so woodstox.jar ecj.jar jeus-console-executor.jar libRunner.so wsit.jar eclipselink.jar jeus-eclipselink.jar libsigar-amd64-linux.so xalan.jar el-impl.jar jeus-gms.jar libsigar-universal64-macosx.dylib xercesImpl.jar extension.jar jeus-hotswap.jar libWebtoBAdmin.so xml-apis.jar FastInfoset.jar jeus.jar mail.jar xml_resource.jar hibernate-validator-5.0.1.Final.jar jeusjaxb.jar message-bridge.jar xmlsec.jar hibernate-validator-annotation-processor-5.0.1.Final.jar jeus-launcher.jar mimepull.jar xsltc.jar hibernate-validator-cdi-5.0.1.Final.jar jeus-network.jar Module-Version-Info.txt We see the usual suspects here, like Hibernate Validator as implementation for Bean Validation, the IBM JBatch implementation (it's Java EE 7, remember ;)), EclipseLink for JPA, Weld for CDI etc. Here we see again a Mac OS X artifact libsigar-universal64-macosx.dylib. It might be that TMaxSoft is working on OS X support, but just hasn't finished it (this is a developer preview after all).

Some additional "system" dependencies are in lib/shared: jax-rs-ri-2.0 jsf-injection-provider.jar jsf_ri_1.2 jsf_ri_2.2 jsf-weld-integration.jar jstl_1.2 libraries.xml The directories contain jars like jax-rs-ri-2.0.jar (Jersey), jsf-ri.jar (Mojarra) and jstl-impl.jar. (I wonder though why these aren't also in the lib/system directory with the other Java EE dependencies.) While JEUS is definitely not GlassFish it's clear that it uses the exact same set of dependencies.

The readme.txt is luckily in English and explains how to start the server. I used the following command from the JEUS installation directory: ./bin/startDomainAdminServer -domain jeus_domain -u administrator -p admin007 And lo it behold, it started at the first attempt: *************************************************************** - JEUS Home : /home/arjan/jeus8 - Java Vendor : Sun - Added Java Option : *************************************************************** + /opt/jdk/bin/java -server -Xmx512m -Xbootclasspath/p:/home/arjan/jeus8/lib/system/extension.jar -classpath /home/arjan/jeus8/lib/system/jeus-launcher.jar:/home/arjan/jeus8/lib/system/xalan.jar:/home/arjan/jeus8/lib/system/xsltc.jar:/home/arjan/jeus8/lib/system/jaxb-impl.jar:/home/arjan/jeus8/lib/system/woodstox.jar:/home/arjan/jeus8/lib/system/xml_resource.jar:/home/arjan/jeus8/lib/system/commons-cli.jar:/home/arjan/jeus8/lib/system/jaxb2-basics-runtime.jar:/home/arjan/jeus8/lib/system/javaee.jar:/home/arjan/jeus8/lib/system/tmaxjce_jdk15x.jar -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.library.path=/home/arjan/jeus8/lib/system -Djava.endorsed.dirs=/home/arjan/jeus8/lib/endorsed -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory -Djava.naming.factory.url.pkgs=jeus.jndi.jns.url -Djava.net.preferIPv4Stack=true -Djava.util.logging.manager=jeus.util.logging.JeusLogManager -Djava.util.logging.config.file=/home/arjan/jeus8/bin/logging.properties -Djeus.home=/home/arjan/jeus8 -Djeus.jvm.version=hotspot -Djeus.tm.checkReg=true -Djeus.properties.replicate=jeus,sun.rmi,java.util,java.net jeus.launcher.Launcher -domain jeus_domain -u administrator -p admin007 ================ JEUS LICENSE INFORMATION ================ === VERSION : JEUS 8.0 (Fix#0) (8.0.0.0-b1) === EDITION: Enterprise (Trial License) === NOTICE: This license restricts the number of allowed clients. === Max. Number of Clients: 5 ========================================================== [2013.09.24 22:48:11][2] [launcher-1] [Launcher-0012] Starting the server [adminServer] with the command /opt/jdk1.7.0_40/jre/bin/java -DadminServer -Xmx1024m -XX:MaxPermSize=128m -server -Xbootclasspath/p:/home/arjan/jeus8/lib/system/extension.jar -classpath /home/arjan/jeus8/lib/system/bootstrap.jar -Djava.security.policy=/home/arjan/jeus8/domains/jeus_domain/config/security/policy -Djava.library.path=/home/arjan/jeus8/lib/system -Djava.endorsed.dirs=/home/arjan/jeus8/lib/endorsed -Djeus.properties.replicate=jeus,sun.rmi,java.util,java.net -Djeus.jvm.version=hotspot -Djava.util.logging.config.file=/home/arjan/jeus8/bin/logging.properties -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.util.logging.manager=jeus.util.logging.JeusLogManager -Djeus.home=/home/arjan/jeus8 -Djava.net.preferIPv4Stack=true -Djeus.tm.checkReg=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Djeus.domain.name=jeus_domain -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory -Djava.naming.factory.url.pkgs=jeus.jndi.jns.url -Djeus.server.protectmode=false -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=/home/arjan/jeus8/domains/jeus_domain/servers/adminServer/logs/jvm.log jeus.server.admin.DomainAdminServerBootstrapper -domain jeus_domain -u administrator -server adminServer . [2013.09.24 22:48:11][2] [launcher-1] [Launcher-0014] The server[adminServer] is being started ... [2013.09.24 22:48:17][2] [adminServer-1] [SERVER-0248] The JEUS server is STARTING. [2013.09.24 22:48:17][0] [adminServer-1] [SERVER-0000] Version information - JEUS 8.0 (Fix#0) (8.0.0.0-b1). [2013.09.24 22:48:17][0] [adminServer-1] [SERVER-0001] java.specification.version=[1.7], java.runtime.version=[1.7.0_40-b43], vendor=[Oracle Corporation] [2013.09.24 22:48:17][2] [adminServer-1] [SERVER-0002] Domain=[jeus_domain], Server=[adminServer], baseport=[9736], pid=[7151] [2013.09.24 22:48:17][2] [adminServer-1] [SERVER-0004] The current system time zone : sun.util.calendar.ZoneInfo[id="Europe/Amsterdam",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=180,lastRule=java.util.SimpleTimeZone[id=Europe/Amsterdam,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]] [2013.09.24 22:48:17][2] [adminServer-1] [SERVER-0571] All JEUS system properties have been confirmed. [2013.09.24 22:48:17][2] [adminServer-1] [SERVER-0568] [Network] service ip:port = [0.0.0.0 : 9736], representation ip = [0.0.0.0], hostname = [java.local], inetAddress = [java.local/0.0.0.0] [2013.09.24 22:48:17][2] [adminServer-1] [SERVER-0561] The default RMI export port = 9743. [2013.09.24 22:48:17][2] [adminServer-1] [UNIFY-0102] There's no selectors count setting for Non-blocking listener 'BASE', applying available processors count 1 instead of it. [2013.09.24 22:48:17][2] [adminServer-1] [NET-0002] Beginning to listen to NonBlockingChannelAcceptor: /0.0.0.0:9736. [2013.09.24 22:48:17][2] [adminServer-1] [UNIFY-0102] There's no selectors count setting for Non-blocking listener 'http-server', applying available processors count 1 instead of it. [2013.09.24 22:48:17][2] [adminServer-1] [NET-0002] Beginning to listen to NonBlockingChannelAcceptor: /0.0.0.0:8808. [2013.09.24 22:48:17][2] [adminServer-1] [UNIFY-0102] There's no selectors count setting for Non-blocking listener 'jms-internal', applying available processors count 1 instead of it. [2013.09.24 22:48:17][2] [adminServer-1] [NET-0002] Beginning to listen to NonBlockingChannelAcceptor: /0.0.0.0:9941. [2013.09.24 22:48:17][2] [adminServer-1] [GMS-0100] The GMS instance for the cluster group jeus_domain_1111111111 has been successfully initialized. [2013.09.24 22:48:18][2] [adminServer-1] [JNSS-0009] The JNDI naming server has been successfully initialized. [2013.09.24 22:48:18][2] [adminServer-1] [JNDI.Local-0001] Starting JNDI Local Client... [2013.09.24 22:48:18][2] [adminServer-1] [JMXR-0138] JMXConnector service URL : service:jmx:jmxmp://0.0.0.0:9736/JeusMBeanServer [2013.09.24 22:48:18][2] [adminServer-1] [JMXR-0138] JMXConnector service URL : service:jmx:jmxmp://0.0.0.0:9736/JEUSMP_adminServer [2013.09.24 22:48:18][2] [adminServer-1] [JMX-0051] JMXConnector started with the JNDI name [mgmt/rmbs/adminServer]. [2013.09.24 22:48:18][2] [adminServer-1] [GMS-1000] The member adminServer has joined the cluster group jeus_domain_1111111111. [2013.09.24 22:48:21][2] [adminServer-1] [CORBA-1002] ORB(SE-ORB) started. [2013.09.24 22:48:22][2] [adminServer-1] [JMS-7374] The persistence store manager for the JMS broker 'adminServer' has been started. [2013.09.24 22:48:22][2] [adminServer-1] [JMS-6822] The JMS engine with the broker named adminServer has started. [2013.09.24 22:48:22][2] [adminServer-1] [WEB-1003] Socket send buffer size of this operating system = [8192] [2013.09.24 22:48:24][2] [adminServer-1] [WEB-1030] The web engine has started successfully. [2013.09.24 22:48:24][2] [adminServer-1] [Deploy-0095] Distributing the application[webadmin]. [2013.09.24 22:48:24][2] [adminServer-1] [WEB-3857] - session descriptor - - timeout : 30(min) - shared : false - reload-persistent : false - session tracking mode - - Cookie : true - URL Rewrite: false - SSL : false - session cookie config - - cookie-name : JSESSIONID - version : 0 - domain : null - path : null - max-age : -1 (browser-lifetime) - secure : false - http-only : true [2013.09.24 22:48:24][2] [adminServer-1] [WEB-1032] Distributed the web context [webadmin] information - Virtual host : DEFAULT_HOST - Context path : /webadmin - Document base : /home/arjan/jeus8/lib/systemapps/fakeWebadmin_war [2013.09.24 22:48:25][2] [adminServer-1] [WEB-3480] The web module [webadmin] has been successfully distributed. [2013.09.24 22:48:25][2] [adminServer-1] [Deploy-0096] Successfully distributed the appliacion[webadmin]. [2013.09.24 22:48:25][2] [adminServer-1] [WEB-3484] ServletContext[name=webadmin, path=/webadmin, ctime=Tue Sep 24 22:48:24 CEST 2013] started successfully. [2013.09.24 22:48:25][2] [adminServer-1] [SERVER-0248] The JEUS server is STANDBY. [2013.09.24 22:48:25][2] [adminServer-1] [SERVER-0248] The JEUS server is STARTING. [2013.09.24 22:48:25][2] [adminServer-1] [WEB-3413] The web engine is ready to receive requests. [2013.09.24 22:48:25][2] [adminServer-1] [SERVER-0602] Successfully sent the JoinedAndReady event. JEUS GMS=[Group=jeus_domain_1111111111,ServerToken=adminServer] [2013.09.24 22:48:25][2] [adminServer-1] [UNIFY-0100] Listener information BASE (plain, 0.0.0.0 : 9736) - VIRTUAL - SecurityServer - FileTransfer - BootTimeFileTransfer - ClassFTP - JNDI - JMXConnectionServer/JeusMBeanServer - JMXConnectionServer/JEUSMP_adminServer - GMS-NetworkManager - TransactionManager - HTTP Listener http-server (plain, 0.0.0.0 : 8808) - VIRTUAL - HTTP Listener jms-internal (plain, 0.0.0.0 : 9941) - VIRTUAL - JMSServiceChannel-internal [2013.09.24 22:48:25][0] [adminServer-1] [SERVER-0242] Successfully started the server. [2013.09.24 22:48:25][2] [adminServer-1] [SERVER-0248] The JEUS server is RUNNING. [2013.09.24 22:48:25][2] [adminServer-1] [SERVER-0401] The elapsed time to start: 13779ms. [2013.09.24 22:48:25][2] [launcher-10] [Launcher-0034] The server[adminServer] initialization completed successfully[pid : 7151]. [2013.09.24 22:48:25][0] [launcher-1] [Launcher-0040] Successfully started the server. The server state is now RUNNING. The server listens on port 8808 by default. While 8080 seems to be sort of the universal default, there are certainly more servers that deviate from this (e.g. WebLogic defaults to 7001). There doesn't seem be a web app configured on the root, as requesting localhost:8808 yields the following result:

You can enable a web console by adding <enable-webadmin>true</enable-webadmin> to [jeus install dir]/domains/jeus_domain/config/domain.xml as a child of the domain node, e.g. :

false 1111111111 adminServer true

After this I should have been able to request http://localhost:9736/webadmin, but unfortunately this didn't work:

After some investigation it looks like this web app should have been in [jeus install dir]/jeus8/lib/systemapps/webadmin, but in my case this directory only contained a WEB-INF folder with empty lib and classes folders. When I created an a.jsp file with just the content "hello" in the [jeus install dir]/jeus8/lib/systemapps/webadmin folder and requested the URL again, I got a result :)

Most likely TMaxSoft is doing an overhaul of their web console and it's not added to this developer preview yet. I assume that on the current production version JEUS 7 this would just have worked.

Finally with the command ./stopServer -host localhost -u administrator -p admin007 JEUS can be stopped. Luckily, it indeed stopped correctly.

Conclusion

For a seasoned Java EE developer and library writer it's rather intriguing that there's a complete Java EE server out there that's virtually unknown outside Korea, or at the very least seems to be completely unknown in the West. JEUS may be a very capable server going from the impressive list of testimonials, but there are very high barriers for the casual Java EE developer to come into contact with JEUS.

The most direct issue is that people outside Korea just don't know about JEUS. It's as simple as that. News postings about JEUS being certified is probably the only thing people ever hear about it. JEUS should really have an Eclipse plug-in in the Eclipse marketplace or in the list of "download additional server adapters", if only to raise awareness that it exists. A few (English) blog posts now and then wouldn't hurt either (a very good example is how David Blevins is raising awareness of TomEE's existence).

For the curious developer who is interested in discovering what JEUS is, the current TmaxSoft websites are a VERY high barrier as well. The USA domain which is just gone, the mandatory login to see documentation or access the download page and above all the absence of links to the most recent versions of JEUS (JEUS 7) are HUGE barriers that will probably shoe away even the more enthusiastic developers.

But JEUS -always- winning the Java EE certification race and the fact that they have been working on their server since at least 2001 (the year JEUS 3 was released) must mean they're doing something right. In a next article I hope to actual run some code on JEUS. My main goal is run the OmniFaces showcase application (which intensively tests JSF, CDI and some BeanValidation), my JASPIC test suite (which obviously tests JASPIC) and our Java EE kickstart application (which tests JSF, EJB, JPA, and the default datasource among others).



Arjan Tijms







References:Further reading: