Understanding Zero-day Exploit of Log4j Security Vulnerability and Solution (CVE-2021-44228, CVE-2021-45046)
Introduction On 9th December 2021, an industry-wide vulnerability was discovered…
August 10, 2019
Assuming your web application is using oracle, and you are deploying your app on Jboss wildfly. If you run on fresh download of wildfly or docker image of jboss/wildfly, you will get following error:
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001: Failed to start service
.
.
.
10:15:56,901 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "oracle")
]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.OracleJDBCDriver"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"org.wildfly.data-source.oracle is missing [jboss.jdbc-driver.OracleJDBCDriver]",
"jboss.driver-demander.java:/oracle is missing [jboss.jdbc-driver.OracleJDBCDriver]"
]
}
10:15:56,903 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "oracle")
]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => [
"jboss.jdbc-driver.OracleJDBCDriver",
"jboss.jdbc-driver.OracleJDBCDriver"
],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"org.wildfly.data-source.oracle is missing [jboss.jdbc-driver.OracleJDBCDriver]",
"jboss.driver-demander.java:/oracle is missing [jboss.jdbc-driver.OracleJDBCDriver]",
"org.wildfly.data-source.oracle is missing [jboss.jdbc-driver.OracleJDBCDriver]"
]
}
<?xml version="1.0" encoding="UTF-8"?>
<module name="com.oracle" xmlns="urn:jboss:module:1.1">
<resources>
<resource-root path="ojdbc7.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
<subsystem xmlns="urn:jboss:domain:datasources:5.0">
<datasources>
<datasource jndi-name="java:/oracle-ds" pool-name="oracle-ds" enabled="true">
<connection-url>jdbc:oracle:thin:@HOSTNAME:PORT/DATABASE</connection-url>
<driver>OracleJDBCDriver</driver>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>100</max-pool-size>
<prefill>true</prefill>
<flush-strategy>IdleConnections</flush-strategy>
</pool>
<security>
<user-name>USERNAME</user-name>
<password>PASSWORD</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
<background-validation>true</background-validation>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
</validation>
<timeout>
<blocking-timeout-millis>5000</blocking-timeout-millis>
<idle-timeout-minutes>5</idle-timeout-minutes>
</timeout>
</datasource>
<drivers>
<driver name="OracleJDBCDriver" module="com.oracle">
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
If you are using wildfly docker image, you might require following Dockerfile
FROM jboss/wildfly
COPY ojdbc7.jar /opt/jboss/wildfly/modules/system/layers/base/com/oracle/main/
COPY module.xml /opt/jboss/wildfly/modules/system/layers/base/com/oracle/main/
#Copying required scripts and files
COPY standalone.xml /opt/jboss/wildfly/standalone/configuration/
COPY <WEBAPP>.war /opt/jboss/wildfly/standalone/deployments/
Note: In above file, module.xml is file having following content:
<?xml version="1.0" encoding="UTF-8"?>
<module name="com.oracle" xmlns="urn:jboss:module:1.1">
<resources>
<resource-root path="ojdbc7.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
docker run -it -d jboss/wildfly
# get its container id
docker ps
# Copy standaline.xml file to current path
docker cp <container-id>/opt/jboss/wildfly/standalone/configuration/standalone.xml .
Now, we just need to build another image from our Dockerfile
docker build -t MY_IMAGE_NAME .
# To run it,
docker run -it -d MY_IMAGE_NAME
Hope you get your problem resolved.
Introduction On 9th December 2021, an industry-wide vulnerability was discovered…
hook_cron() suggests to put tasks that executes in shorter time or non-resource…
Visual Studio Code is one of the awesome developer tools by Microsoft. Let’s…
This post some useful tips of using strings, and some issues while dealing with…
While doing code review of one of junior, I encountered following code: What…
I have been using drupal 7 from a long time, and setting up a dev environment…
Introduction This post has the complete code to send email through smtp server…
Introduction In a normal email sending code from python, I’m getting following…
Introduction In one of my app, I was using to talk to . I have used some event…
Introduction So you have a Django project, and want to run it using docker image…
Introduction It is very important to introduce few process so that your code and…
Introduction In this post, we will see a sample Jenkin Pipeline Groovy script…