tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pid <...@pidster.com>
Subject Re: Problem connecting to tomcat6 service via JConsole on Windows Server 2008
Date Thu, 23 Dec 2010 11:37:50 GMT
On 23/12/2010 10:01, Adib wrote:
> The local process option seems to be a hit and miss on various versions of
> windows, it was not working. Also the local process option only works if
> jconsole is running the same userid as process you want to connect to, which
> is not the case in my tomcat setup which is running as a service.

re: 'masks', the above is a better description.

> I tested my setup on my Vista 64 bit laptop an it worked which narrowed the
> problem down to something about Windows Server 2008 R2.
> 
> A bit more googling led me this problem repot
> http://tai-dev.blog.co.uk/2010/03/26/glassfish-jmx-and-windows-web-server-2008-can-play-together-with-a-few-tweaks-here-s-how-plus-bonus-jconsole-config-info-8251001/
> 
> and the fix was to add -Djava.rmi.server.hostname=127.0.0.1 to my command
> line options for the service. I have no idea why this setting fixes the
> problem but it does.

Because when JMX looks for the connection to the second port, it uses
the hostname as part of the argument.  Setting 127.0.0.1 ensures it can
find it's own ar**, if you're connecting locally.

> Has anyone found any good documentation on how JVM instrumentation works and
> why it is so troublesome to connect to an instrumented hotspot vm.

Not really.  I have gleaned it from various sources.

Java 6 uses the Attach API - which enumerates JVM processes on the local
machine, and permits another Java process to attach and set system
properties, and load Java Agents.

Tools like JConsole and VisualVM use it to display a list of processes.

When you connect to the process, it checks to see if the JMX agent is
enabled; if not it loads the management-agent.jar from %JAVA_HOME%/lib,
which enables JMX on a 'local connector stub' - which can be read and
converted to a JMX connection.

As you point out, the attaching process must have the same privileges as
the target process[1], but it must also be able to create a temporary
file on a filesystem which can permits user permissions (ie suitably
configured NTFS).


An additional complication, as described by André, is that JMX actually
needs two ports, (the other for the RMI registry), and the second port
is (usually) assigned random-ish-ly.  (catalina-jmx-remote.jar fixes this.)


p





> On Thu, Dec 23, 2010 at 1:20 AM, André Warnier <aw@ice-sa.com> wrote:
> 
>> Shortly :
>> If you are local, then you can use the "Local process" option in jconsole.
>>
>> Otherwise : as far as I remember, the jmx connection really uses 2 ports,
>> not only the one you obviously connect to. And that second port is random,
>> which is what makes it difficult to connect through a firewall or so.
>> Maybe it is that second port that is blocked in your case ?
>> Have another look with tcpview while you are trying to connect, if you do
>> not see some new  LISTEN port appear during the connection attempt.
>>
>>
>>
>> Adib wrote:
>>
>>> Hi,
>>>
>>> I am having a problem connecting to Tomcat 6 running as a service on
>>> Windows
>>> Server 2008 R2. Here are the details of my setup.
>>>
>>> 32 Bit JDK 1.6._23
>>> 64 Bit Windows Server 2008 R2
>>>
>>> My jakarta service log shows that I am setting the jvm properties to turn
>>> on
>>> jmx remote access to the JVM
>>>
>>> [2010-12-22 23:22:21] [447  javajni.c] [debug] Jvm Option[6]
>>> -Dcom.sun.management.jmxremote
>>> [2010-12-22 23:22:21] [447  javajni.c] [debug] Jvm Option[7]
>>> -Dcom.sun.management.jmxremote.port=8999
>>> [2010-12-22 23:22:21] [447  javajni.c] [debug] Jvm Option[8]
>>> -Dcom.sun.management.jmxremote.ssl=false
>>> [2010-12-22 23:22:21] [447  javajni.c] [debug] Jvm Option[9]
>>> -Dcom.sun.management.jmxremote.authenticate=false
>>>
>>> I am running jconsole on the same machine that is running tomcat so I am
>>> not
>>> trying to connect remotely and should
>>> not have any problems with ports I even turned off the windows firewall on
>>> the machine to make sure it was not getting
>>> in the way
>>>
>>> systernals tcpview shows that tomact6.exe is listening on port 8999
>>>
>>> I am running tomact6 service as the user pmtomact
>>>
>>> I am running jconsole as the user Administrator
>>>
>>> on the jconsole I tried localhost:8999 and it tries to connect for a while
>>> then reports that it can can not connect.
>>>
>>> I tried running tomcat as user administrator just starting from the
>>> startup.bat with the proper jmx paramters and it does not work either.
>>>
>>> I tried running jconsole as pmtomcat user still no luck connecting
>>>
>>> I tried creating a directory under
>>> C:\Users\pmtomcat\AppData\Local\Temp\hsperfdata_pmtomcat and checked that
>>> the directory was writable by the pmtomcat user still it does not work.
>>>
>>> Any ideas of how I can troubleshoot this problem, it is driving me crazy?
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>>
> 


Mime
View raw message