7

I'm trying to enable the JBoss Web Native libraries in JBoss 7.1.1. I have read this question and the answers and have tried the following steps to enable the native libraries in JBoss, but it didn't work so far. I'm on OS X:

  • Downloaded the macosx archive from http://www.jboss.org/jbossweb/downloads/jboss-native-2-0-10
  • Unzipped it into the JBoss directory, so the contents of the archive are available in bin/native.
  • Updated bin/standalone.conf to include the library path: JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/path/to/jboss-as-7.1.1.Final-native/bin/native:$PATH"

Starting JBoss, I can still see the following in the log file:

[org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-1) Starting Coyote HTTP/1.1 on http-localhost-127.0.0.1-8080

instead of the expected Http11AprProtocol.

What am I missing?

Community
  • 1
  • 1
nwinkler
  • 52,665
  • 21
  • 154
  • 168

2 Answers2

15

Turns out the above steps are no longer necessary for JBoss 7.1.1, as the native libraries are now bundled under modules/org/jboss/as/web/main/lib.

To enable their usage, I had to set the native attribute to true in the web subsystem in standalone.xml. For some reason it was set to false in the default configuration:

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" 
        native="true">
    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
    <virtual-server name="default-host" enable-welcome-root="true">
        <alias name="localhost"/>
        <alias name="example.com"/>
    </virtual-server>
</subsystem>
nwinkler
  • 52,665
  • 21
  • 154
  • 168
2

JBOSS EAP 6.0

Check if you have modules/org/jboss/as/web/main/lib in JBOSS_HOME. If not as it is in my version of JBoss EAP 6.0.

first: yum install tomcat-native.x86_64

Now your system has got tomcat native library under /usr/lib64 that is generally in the java.library.path then set native=true in subsystem web as nwinkler's suggested:

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" 
    native="true">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="true">
    <alias name="localhost"/>
    <alias name="example.com"/>
</virtual-server>

and now restart JBOSS.

Without tomcat native libraries installed you have in log:

10:12:31,700 INFO  [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-1) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/jdk1.6.0_37/jre/lib/amd64/server:/usr/java/jdk1.6.0_37/jre/lib/amd64:/usr/java/jdk1.6.0_37/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
10:12:32,203 INFO  [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-8) Starting Coyote HTTP/1.1 on http-/127.0.0.1:8080

With tomcat native libraries installed your log writes:

10:22:56,147 INFO  [org.apache.coyote.http11.Http11AprProtocol] (MSC service thread 1-5) Starting Coyote HTTP/1.1 on http-/127.0.0.1:8080

ALTERNATIVE

1) Download native library from JBoss web sites:

wget http://downloads.jboss.org/jbossnative/2.0.10.GA/jboss-native-2.0.10-linux2-x64-ssl.tar.gz

2) untar

tar xvzf jboss-native-2.0.10-linux2-x64-ssl.tar.gz

3) Create a folder for your native-libraries:

 mkdir -p tomcat-native

4) Move bin/native in your new folder

 mv bin/native tomcat-native

5) Make your folder visible by java. Add this in standalone.conf or domain.conf

 JAVA_OPTS="$JAVA_OPTS -Djava.library.path=[the tomcat-native's folder path]
  • Hi nwinkler. Sorry for the mistake, but the question is tagged with jboss and this is one of the first of landing pages from google search with keywords like JBoss and Native. I'm trying to change question/answer. – Marco Battaglia Mar 05 '13 at 09:31
  • @nwinkler I think the JBoss EAP answer is at home here. EAP 6.0 is but a minor variation on JBoss AS 7.1.1. – dexter meyers Jul 25 '13 at 10:21