JBoss5
- JEE5 certified
- Java EE 5 (May 11, 2006) (Java Servlet 2.5, JSP 2.1, JSTL 1.2, JSF 1.2, EJB 3.0, JDBC 3.0)
https://docs.oracle.com/javaee/5/tutorial/doc/javaeetutorial5.pdf
- Web container
- EJB container
- Requires jdk-1_5_0_22-linux-amd64.bin from Oracle to run
Locally on debian buster
cp jdk-1_5_0_22-linux-amd64.bin ~ cd ~ ./jdk-1_5_0_22-linux-amd64.bin unzip jboss-5.1.0.GA.zip JAVA_HOME=jdk1.5.0_22/ jboss-5.1.0.GA/bin/run.sh -b 0.0.0.0 http://127.0.0.1:8080/ wget https://archive.apache.org/dist/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.zip unzip apache-maven-3.1.1-bin.zip JAVA_HOME=jdk1.5.0_22/ ~/apache-maven-3.1.1/bin/mvn -version JAVA_HOME=~/jdk1.5.0_22/ ~/apache-maven-3.1.1/bin/mvn clean install
Docker
Dockerfile
FROM ubuntu:16.04 RUN apt-get update && apt-get install -y openssh-server unzip openjdk-8-jdk net-tools maven vim RUN mkdir /var/run/sshd RUN echo 'root:screencast' | chpasswd RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config # SSH login fix. Otherwise user is kicked off after login RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile RUN useradd userx RUN echo 'userx:userx' | chpasswd EXPOSE 22 8080 8081 8009 8009 CMD ["/usr/sbin/sshd", "-D"]
1 wget http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA.zip
2 unzip jboss-5.1.0.GA.zip
3
4 nano Dockerfile
5
6 docker build -t docker_jboss5 .
7 mkdir target
8 docker run -d -p 8080:8080 --name jboss5_container --mount type=bind,source="$(pwd)"/target,target=/app docker_jboss5
9 #docker run -d -P --name jboss5_container --mount type=bind,source="$(pwd)"/target,target=/app docker_jboss5
10 mv ~/jboss-5.1.0.GA.zip target/
11 docker exec -it jboss5_container bash
12 cd /app
13 unzip jboss-5.1.0.GA.zip
14
15 ./jdk-1_5_0_22-linux-amd64.bin
16 /app# jdk1.5.0_22/bin/java -version
17 #java version "1.5.0_22"
18 #Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
19 #Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_22-b03, mixed mode)
20
21 #/app/jdk1.5.0_22/bin/java -jar run.jar
22
23 mvn -version
24 #Apache Maven 3.3.9
25 #Maven home: /usr/share/maven
26 #Java version: 1.8.0_252, vendor: Private Build
27 #Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
28 #Default locale: en_US, platform encoding: ANSI_X3.4-1968
29 #OS name: "linux", version: "4.19.0-6-amd64", arch: "amd64", family: "unix"
30
31 cd /app/jboss-5.1.0.GA/bin
32 JAVA_HOME=/app/jdk1.5.0_22 ./run.sh -b 0.0.0.0
Example EJB for jboss5 in docker container
- docker exec -it jboss5_container bash
- cd /app/ejbjee5
- mvn clean compile package
- cp /app/ejbjee5/target/ejbjee5-0.0.1.jar /app/jboss-5.1.0.GA/server/default/deploy/
18:04:14,955 INFO [JBossASKernel] Created KernelDeployment for: ejbjee5-0.0.1.jar 18:04:14,955 INFO [JBossASKernel] installing bean: jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3 18:04:14,955 INFO [JBossASKernel] with dependencies: 18:04:14,955 INFO [JBossASKernel] and demands: 18:04:14,955 INFO [JBossASKernel] jboss.ejb:service=EJBTimerService 18:04:14,955 INFO [JBossASKernel] and supplies: 18:04:14,956 INFO [JBossASKernel] Class:org.allowed.bitarus.ScheduleRemote 18:04:14,956 INFO [JBossASKernel] jndi:ScheduleWS/local-org.allowed.bitarus.ScheduleLocal 18:04:14,956 INFO [JBossASKernel] jndi:ScheduleWS/remote 18:04:14,956 INFO [JBossASKernel] Class:org.allowed.bitarus.ScheduleLocal 18:04:14,956 INFO [JBossASKernel] jndi:ScheduleWS/local 18:04:14,956 INFO [JBossASKernel] jndi:ScheduleWS/remote-org.allowed.bitarus.ScheduleRemote 18:04:14,956 INFO [JBossASKernel] Added bean(jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3) to KernelDeployment of: ejbjee5-0.0.1.jar 18:04:14,957 INFO [EJB3EndpointDeployer] Deploy AbstractBeanMetaData@542c21cb{name=jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3_endpoint bean=org.jboss.ejb3.endpoint.deployers.impl.EndpointImpl properties=[container] constructor=null autowireCandidate=true} 18:04:15,020 INFO [SessionSpecContainer] Starting jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3 18:04:15,020 INFO [EJBContainer] STARTED EJB: org.allowed.bitarus.ScheduleWS ejbName: ScheduleWS 18:04:15,041 INFO [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI: ScheduleWS/remote - EJB3.x Default Remote Business Interface ScheduleWS/remote-org.allowed.bitarus.ScheduleRemote - EJB3.x Remote Business Interface ScheduleWS/local - EJB3.x Default Local Business Interface ScheduleWS/local-org.allowed.bitarus.ScheduleLocal - EJB3.x Local Business Interface 18:04:15,097 INFO [DefaultEndpointRegistry] register: jboss.ws:context=ejbjee5-0.0.1,endpoint=ScheduleWS 18:04:15,225 INFO [WSDLFilePublisher] WSDL published to: file:/app/jboss-5.1.0.GA/server/default/data/wsdl/ejbjee5-0.0.1.jar/ScheduleWSService4435570151338675382.wsdl 18:04:15,248 INFO [TomcatDeployment] deploy, ctxPath=/ejbjee5-0.0.1
./src/main/java/org/allowed/bitarus/ScheduleRemote.java
./src/main/java/org/allowed/bitarus/ScheduleLocal.java
./src/main/java/org/allowed/bitarus/ScheduleWS.java
1 package org.allowed.bitarus;
2
3 import javax.ejb.Stateless;
4 import javax.jws.WebMethod;
5 import javax.jws.WebService;
6 import org.allowed.bitarus.ScheduleRemote;
7
8 @Stateless
9 @WebService
10 public class ScheduleWS implements ScheduleRemote {
11
12 @WebMethod
13 public int addSchedule(int val1, int val2) {
14 return val1 + val2;
15 }
16 }
./src/main/resources/META-INF/ejb-jar.xml
1 <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
4 version="3.0">
5 <enterprise-beans>
6 <session>
7 <ejb-name>ScheduleWS</ejb-name>
8 <business-local>org.allowed.bitarus.ScheduleLocal</business-local>
9 <business-remote>org.allowed.bitarus.ScheduleRemote</business-remote>
10 <ejb-class>org.allowed.bitarus.ScheduleWS</ejb-class>
11 <session-type>Stateless</session-type>
12 <transaction-type>Container</transaction-type>
13 </session>
14 </enterprise-beans>
15 </ejb-jar>
./pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>org.allowed.bitarus</groupId>
6 <artifactId>ejbjee5</artifactId>
7 <version>0.0.1</version>
8 <packaging>ejb</packaging>
9 <dependencies>
10 <dependency>
11 <groupId>javaee</groupId>
12 <artifactId>javaee-api</artifactId>
13 <version>5</version>
14 <scope>provided</scope>
15 </dependency>
16 </dependencies>
17 <build>
18 <sourceDirectory>src/main/java</sourceDirectory>
19 <plugins>
20 <plugin>
21 <artifactId>maven-compiler-plugin</artifactId>
22 <configuration>
23 <source>1.5</source>
24 <target>1.5</target>
25 </configuration>
26 </plugin>
27 </plugins>
28 </build>
29 </project>
- ./SoapUI-5.5.0
- new soap project
initial wsdl: http://127.0.0.1:8080/ejbjee5-0.0.1/ScheduleWS?wsdl
Example WAR for JBoss5 in docker container
- mvn clean install
- cp /app/warjee5/target/warjee5-0.0.1.war /app/jboss-5.1.0.GA/server/default/deploy
src/main/java/org/allowed/bitarus/TestBean.java
1 package org.allowed.bitarus;
2 import java.util.logging.Logger;
3 import java.util.logging.Level;
4
5 public class TestBean{
6 private String name;
7 private Logger logger;
8
9 public TestBean(){
10 this.logger = Logger.getLogger(this.getClass().getName() );
11 this.logger.log(Level.INFO,"Created test bean");
12 this.name="Ioooo";
13 }
14
15 public String getName(){
16 this.logger.info("getName called");
17 return this.name;
18 }
19
20 public void setName(String name){
21 this.name=name;
22 }
23 }
src/main/java/org/allowed/bitarus/Handler.java
1 package org.allowed.bitarus;
2
3 import java.util.logging.Logger;
4 import java.util.logging.Level;
5 import javax.servlet.ServletRequest;
6 import javax.servlet.ServletResponse;
7 import javax.servlet.jsp.JspWriter;
8 import javax.servlet.jsp.PageContext;
9
10 public class Handler{
11 private ServletRequest request;
12 private ServletResponse response;
13 private JspWriter out;
14
15 public Handler(ServletRequest request, ServletResponse response,JspWriter out){
16 this.request = request;
17 this.response = response;
18 this.out = out;
19 }
20
21 public Handler(PageContext pageContext){
22 this.request = pageContext.getRequest();
23 this.response = pageContext.getResponse();
24 this.out = (JspWriter) pageContext.getAttribute(pageContext.OUT) ;
25 }
26
27 public void writeHandler(){
28 try{
29 this.out.println(String.format("<p>Handler up %s</p>" , this.request.getParameter("user") ));
30 }
31 catch(Exception ex){
32 }
33 }
34
35 public void writeIP(){
36 try{
37 this.out.print("!!! Your IP address is " + this.request.getRemoteAddr());
38 }
39 catch(Exception ex){
40 }
41 }
42
43 }
src/main/webapp/otherindex.jsp
1 <%@page import="org.allowed.bitarus.Handler" %>
2 <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" />
3 <% //Handler h = new Handler(request,response,out); %>
4 <% Handler h = new Handler(pageContext); %>
5 <html>
6 <body>
7 <p>Other Hello</p>
8 <p>World <jsp:getProperty name="test" property="name" /> </p>
9 <% h.writeHandler(); %>
10 <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2>
11 <h3><% h.writeIP(); %></h3>
12 </body>
13 </html>
src/main/webapp/index.jsp
1 <%@page import="org.allowed.bitarus.Handler" %>
2 <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" />
3 <% //Handler h = new Handler(request,response,out); %>
4 <% Handler h = new Handler(pageContext); %>
5 <html>
6 <body>
7 <p>Hello</p>
8 <p>World <jsp:getProperty name="test" property="name" /> </p>
9 <% h.writeHandler(); %>
10 <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2>
11 <h3><% h.writeIP(); %></h3>
12 </body>
13 </html>
src/main/webapp/WEB-INF/web.xml
1 <?xml version="1.0"?>
2 <web-app version="2.5"
3 xmlns="http://java.sun.com/xml/ns/javaee"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
6 <servlet>
7 <servlet-name>index</servlet-name>
8 <jsp-file>/index.jsp</jsp-file>
9 </servlet>
10 <servlet-mapping>
11 <servlet-name>index</servlet-name>
12 <url-pattern>/index**</url-pattern>
13 </servlet-mapping>
14
15 <servlet>
16 <servlet-name>otherindex</servlet-name>
17 <jsp-file>/otherindex.jsp</jsp-file>
18 </servlet>
19 <servlet-mapping>
20 <servlet-name>otherindex</servlet-name>
21 <url-pattern>/otherindex**</url-pattern>
22 </servlet-mapping>
23
24 </web-app>
pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>org.allowed.bitarus</groupId>
6 <artifactId>warjee5</artifactId>
7 <version>0.0.1</version>
8 <packaging>war</packaging>
9 <dependencies>
10 <dependency>
11 <groupId>javaee</groupId>
12 <artifactId>javaee-api</artifactId>
13 <version>5</version>
14 <scope>provided</scope>
15 </dependency>
16 </dependencies>
17 <build>
18 <sourceDirectory>src</sourceDirectory>
19 <plugins>
20 <plugin>
21 <artifactId>maven-compiler-plugin</artifactId>
22 <configuration>
23 <source>1.5</source>
24 <target>1.5</target>
25 </configuration>
26 </plugin>
27 </plugins>
28 </build>
29 </project>