?
Solved

Setup Tomcat to support IPv6

Posted on 2011-04-22
36
Medium Priority
?
4,995 Views
Last Modified: 2013-12-02
We have a Windows 2008 Server that is hosting a web site and I'm trying to get it setup to support IPv6.  I have confirmed the IPv6 connectivity to this server is working and that the Windows 2008 firewall is not blocking anything.  Currently when I try to bring up the site, from the server itself, with an IPv6 address http://[IPv6 addres]:28080 it doesn't work.  I have also tried http:[::1]:28080 and I get nothing.  From what I've seen on the Internet Tomcat 6 supports IPv6 but I'm wondering if I need some command or library added to my tomcat server.xml file or if there something else I'm missing.
0
Comment
Question by:lsysamc
  • 16
  • 12
  • 5
33 Comments
 
LVL 32

Expert Comment

by:harbor235
ID: 35459288


is the service started on port 28080?


harbor235 ;}
0
 

Author Comment

by:lsysamc
ID: 35459821
Yes, of course.  It works fine on IPv4.
0
 
LVL 32

Expert Comment

by:harbor235
ID: 35459843

right, but is it bound to the v6 IP?

netstat -an

harbor235 ;}
0
Veeam and MySQL: How to Perform Backup & Recovery

MySQL and the MariaDB variant are among the most used databases in Linux environments, and many critical applications support their data on them. Watch this recorded webinar to find out how Veeam Backup & Replication allows you to get consistent backups of MySQL databases.

 

Author Comment

by:lsysamc
ID: 35461111
We might be getting somewhere.  I do have several ports listening on [::] but not the ports or port 28080 that I need.  So then the question is how do I make Tomcat service list on port 28080 for IPv6????
0
 
LVL 32

Expert Comment

by:harbor235
ID: 35461673

What version of tomcat?

harbor235 ;}
0
 
LVL 32

Expert Comment

by:harbor235
ID: 35461741
0
 

Author Comment

by:lsysamc
ID: 35461823
It is Tomcat 6.0.26
0
 
LVL 32

Expert Comment

by:harbor235
ID: 35461890


try     [your-ipv6_address_here]:28080


harbor235 ;}
0
 
LVL 62

Expert Comment

by:gheist
ID: 35465560
your URL was not right
http: / / [ : : 1 ] : 2 8 0 8 0
0
 

Author Comment

by:lsysamc
ID: 35466049
Yeah I didn't type it correctly in the question.  I was trying it as http: / / [ : : 1 ] : 2 8 0 8 0  Below are the ports that IV46 and IPv6 are listening to.  As we can see Tomcat isn't listening to port 28080 like it is on IPv4.   So I really think it comes to why is Tomcat 6.0.26 not listening to port 28080 on IPv6 like it does on IPv4.  Any clues?

C:\Users\administrator.STI>netstat -an

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1688           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:2301           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:2381           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:4899           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:5666           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:8009           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:8081           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:8400           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:8402           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:8600           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:8686           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:12489          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:28009          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:28080          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:28686          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:47001          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49152          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49153          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49154          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49159          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49181          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49188          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:54331          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:54332          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:58848          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:59301          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:59302          0.0.0.0:0              LISTENING
TCP    [::]:135               [::]:0                 LISTENING
TCP    [::]:445               [::]:0                 LISTENING
TCP    [::]:1688              [::]:0                 LISTENING
TCP    [::]:2301              [::]:0                 LISTENING
TCP    [::]:2381              [::]:0                 LISTENING
TCP    [::]:3389              [::]:0                 LISTENING
TCP    [::]:8600              [::]:0                 LISTENING
TCP    [::]:8686              [::]:0                 LISTENING
TCP    [::]:28686             [::]:0                 LISTENING
TCP    [::]:47001             [::]:0                 LISTENING
TCP    [::]:49152             [::]:0                 LISTENING
TCP    [::]:49153             [::]:0                 LISTENING
TCP    [::]:49154             [::]:0                 LISTENING
TCP    [::]:49159             [::]:0                 LISTENING
TCP    [::]:49182             [::]:0                 LISTENING
TCP    [::]:54331             [::]:0                 LISTENING
TCP    [::]:54332             [::]:0                 LISTENING
TCP    [::]:58848             [::]:0                 LISTENING
TCP    [::]:59301             [::]:0                 LISTENING
TCP    [::]:59302             [::]:0                 LISTENING
UDP    0.0.0.0:123            *:*
UDP    0.0.0.0:161            *:*
UDP    0.0.0.0:500            *:*
UDP    0.0.0.0:4500           *:*
UDP    0.0.0.0:5355           *:*
UDP    0.0.0.0:8081           *:*
UDP    0.0.0.0:8082           *:*
UDP    0.0.0.0:53199          *:*
UDP    127.0.0.1:52577        *:*
UDP    127.0.0.1:58325        *:*
UDP    127.0.0.1:62588        *:*
UDP    127.0.0.1:63920        *:*
UDP    127.0.0.1:63921        *:*
UDP    172.24.1.71:137        *:*
UDP    172.24.1.71:138        *:*
UDP    [::]:123               *:*
UDP    [::]:161               *:*
UDP    [::]:500               *:*
UDP    [::]:5355              *:*
0
 
LVL 62

Expert Comment

by:gheist
ID: 35466125
check http connector in server.xml
unless address is specified it should listen to both ipv6 and ip4
0
 

Author Comment

by:lsysamc
ID: 35466620
Here is how it's configured in the server.xml file.  

<Connector port="28080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               maxThreads="700"
               minSpareThreads="25"
               maxSpareThreads="50"
               redirectPort="28443" />
0
 
LVL 62

Expert Comment

by:gheist
ID: 35467389
Which version ov Java you are using?
0
 

Author Comment

by:lsysamc
ID: 35467746
1.6.0_20
0
 

Author Comment

by:lsysamc
ID: 35474319
Any other thoughts????  It's Java 1.6.0_20
0
 
LVL 62

Expert Comment

by:gheist
ID: 35474511
should not be any different starting from Java 1.5 and tomcat 5, XP SP3 and anything up.
installed using pressing Enter key to accept default options. I have run tomcat7.exe (without W) privileged to unblock network server functionality, i.e go to program directory, right click to run as administrator with service stopped, then ^C to exit, start service and works fine.

C:\Users\Gheist>netstat -an | find "8080"
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING
  TCP    [::]:8080              [::]:0                 LISTENING
C:\Users\Gheist>ver
Microsoft Windows [Version 6.1.7601] = Win 7 SP1
C:\Users\Gheist>java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing) Screenshot of working IPv6 website using Tomcat 7
0
 

Author Comment

by:lsysamc
ID: 35474588
I wish mine was doing what I see on yours but as you see below something is not correct.  I might try to install tomcat again and see what happens.  I do see where our Java is 64 bit where yours is 32 bit.  Any other thoughts.

C:\Users\administrator.STI>java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)

C:\Users\administrator.STI>netstat -an | find "8080"
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:28080          0.0.0.0:0              LISTENING
  TCP    172.24.1.71:8080       10.1.5.17:36577        TIME_WAIT
  TCP    172.24.1.71:8080       10.1.5.17:36578        TIME_WAIT
  TCP    172.24.1.71:8080       172.24.1.81:11269      ESTABLISHED
  TCP    172.24.1.71:8080       172.24.1.81:11333      ESTABLISHED
  TCP    172.24.1.71:8080       172.24.1.81:23264      ESTABLISHED
  TCP    172.24.1.71:8080       172.24.1.81:24037      ESTABLISHED
  TCP    172.24.1.71:8080       172.24.1.81:29076      ESTABLISHED
  TCP    172.24.1.71:8080       172.24.1.81:31153      ESTABLISHED

C:\Users\administrator.STI>
0
 
LVL 62

Expert Comment

by:gheist
ID: 35474735
can you confirm firewall exception?
0
 

Author Comment

by:lsysamc
ID: 35474942
I can ping the server remotely or from on the server itself.

C:\Users\administrator.STI>ping ::1

Pinging ::1 from ::1 with 32 bytes of data:
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms

Ping statistics for ::1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms


 Firewall rule allowing trafficfirewall2.PNG
0
 
LVL 62

Expert Comment

by:gheist
ID: 35475216
firewall seems good
maybe APR? It is largely not necessary as sun-oracle is a known app server distributor and works to polish their performance.
https://issues.apache.org/bugzilla/show_bug.cgi?id=43327 ?
0
 

Author Comment

by:lsysamc
ID: 35476961
I just had another thought.  I went to another win2008 server to test this and IPv6 was installed but I had to check it to activate it.  I wonder if ipv6 wasn't checked when you do the tomcat install if tomcat doesn't install the library's needed to support ipv6.  Any thoughts?  
0
 
LVL 62

Expert Comment

by:gheist
ID: 35478933
No such thing. It relies on Java to make TCP listener
0
 

Author Comment

by:lsysamc
ID: 35490638
I played with this a little yesterday.  I guess there are a few ways to install Tomcat.  When the install was done originally we just downloaded the tomcat zip file and put it in place and then ran a program to create tomcat startup service.  Yesterday we downloaded the same version of Tomcat but in the *.exe format and then did a typical install.  Installing the 2nd traditional way the ipv6 part works.  So something is missing when you do the install with the zip file procedure vs doing the normal install.  Anyone know why this happens or more importantly know what is missing so we can add it install of reinstalling Tomcat?
0
 
LVL 62

Expert Comment

by:gheist
ID: 35491350
http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_0/res/tomcat.nsi no rocket science in the installer.
only place to specify listener is server.xml
0
 

Author Comment

by:lsysamc
ID: 35506786
Sorry, I'm not sure I understand.  Here is my server.xml file.  Is there something missing from it or something in it stopping IPv6 from working?

<?xml version='1.0' encoding='utf-8'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" at this level.
     Documentation at /docs/config/server.html
 -->
<Server port="28005" shutdown="SHUTDOWN">

  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
  <Listener className="org.apache.catalina.core.JasperListener" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" Note:  A "Service" is not itself a "Container",
       so you may not define subcomponents such as "Valves" at this level.
       Documentation at /docs/config/service.html
   -->
  <Service name="Catalina">
 
    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->
   
   
    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL HTTP/1.1 Connector on port 28080
    -->
    <Connector port="28080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="28443" />
    <!-- A "Connector" using the shared thread pool-->
    <!--
    <Connector executor="tomcatThreadPool"
               port="28080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="28443" />
    -->          
    <!-- Define a SSL HTTP/1.1 Connector on port 28443
         This connector uses the JSSE configuration, when using APR, the
         connector should be using the OpenSSL style configuration
         described in the APR documentation -->
    <!--
    <Connector port="28443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->

    <!-- Define an AJP 1.3 Connector on port 28009 -->
    <Connector port="28009" protocol="AJP/1.3" redirectPort="28443" />


    <!-- An Engine represents the entry point (within Catalina) that processes
         every request.  The Engine implementation for Tomcat stand alone
         analyzes the HTTP headers included with the request, and passes them
         on to the appropriate Host (virtual host).
         Documentation at /docs/config/engine.html -->

    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">        
    -->
    <Engine name="Catalina" defaultHost="localhost">

      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->
      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->        

      <!-- The request dumper valve dumps useful debugging information about
           the request and response data received and sent by Tomcat.
           Documentation at: /docs/config/valve.html -->
      <!--
      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
      -->

      <!-- This Realm uses the UserDatabase configured in the global JNDI
           resources under the key "UserDatabase".  Any edits
           that are performed against this UserDatabase are immediately
           available for use by the Realm.  
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/> -->
             
<!-- Edit: Realm removed by Modalot ->

      <!-- Define the default virtual host
           Note: XML Schema validation will not work with Xerces 2.2.
       -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true" deployOnStartup="false"
            xmlValidation="false" xmlNamespaceAware="false">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->

      </Host>
    </Engine>
  </Service>
</Server>
0
 
LVL 62

Expert Comment

by:gheist
ID: 35511514
<Engine name="Catalina" defaultHost="localhost">

is ::1 resolving by means of hosts file to localhost?
0
 

Author Comment

by:lsysamc
ID: 35511981
Yes, it is resolving my means of the c:\windows\systems32\drivers\etc\hosts file.  From the web server itself it pings the localhost without issue, as you can see.   Also this Catalina line you posted is the same in the server.xml file from both the working and non working versions of Tomcat installs.


C:\BOSWeb>ping ::1

Pinging ::1 from ::1 with 32 bytes of data:
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms

Ping statistics for ::1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\BOSWeb>
0
 
LVL 62

Expert Comment

by:gheist
ID: 35513580
exactly that is the problem: no mention calling localhost ::1...
deleting reference to "localhost" in this particular config line should help.
0
 

Author Comment

by:lsysamc
ID: 35516305
I will delete the ::1   localhost entry out of the hosts file tomorrow morning and let you know what happens.

Can the moderators please delete comment http:#35506786?
0
 
LVL 62

Expert Comment

by:gheist
ID: 35517336
it should be in hosts file.
i am surprised that ping ::1 does not show localhost
i have no windows at hand this week.

0
 

Author Comment

by:lsysamc
ID: 35688872
I think were way off track here.  Please remember I installed tomcat with the *.exe tomcat file on the SAME server that the install of tomcat was done with the *.zip file and with the exe install of tomcat IPv6 works so it's something with the install process of tomcat not this hosts file.
0
 
LVL 62

Accepted Solution

by:
gheist earned 1000 total points
ID: 35689002
yes, .exe installer constructs server.xml on the go
0
 

Author Closing Comment

by:lsysamc
ID: 35787769
We were off target and not making any progress.
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Make the most of your online learning experience.
How to fix a SonicWall Gateway Anti-Virus firewall blocking automatic updates to apps like Windows, Adobe, Symantec, etc.
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…

755 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question