2012/2/3 Mark Thomas <[email protected]>:
> On 03/02/2012 12:19, Konstantin Kolinko wrote:
>> 2012/2/3 <[email protected]>:
>>> + @Override
>>> + public String getMBeanKeyProperties() {
>>> + Container c = this;
>>> + StringBuilder keyProperties = new StringBuilder();
>>> + int containerCount = 0;
>>> +
>>> + // Work up container hierarchy, add a component to the name for
>>> + // each container
>>> + while (!(c instanceof Engine)) {
>>> + if (c instanceof Wrapper) {
>>> + keyProperties.append(",servlet=");
>>> + keyProperties.append(c.getName());
>>
>> I think that the names should be wrapped by ObjectName.quote().
>> Here and in similar method implemented in another class below.
>> I do not think that there is a restriction that forbids ,;:= in a servlet
>> name.
>
> That is going to change the name Servlets are registered under. That
> sort of change has caused problems for folks in the past. I recall
> someone (rjung?) fixed a similar issue in the connectors but I can't
> remember where or how off-hand.
Connectors use address in their names.
The problem was that if address is IP6 IP that has ':'s then it cannot
be used unquoted. That is why ObjectName.quote() was needed there.
-> MBeanUtils#createObjectName(String domain,
Connector connector)
A recent bug with connector names was with a change that removed
quotes to use better connector names in log messages and as thread
names. Quotes are needed in JMX names only, but not in human-readable
names such as Container.getName(). So there was some work to separate
the two usages. (That is what I remember. I might be a bit biased
though).
Javadoc for Container.getName() says that that name is for humans. It
says nothing about it being suitable for JMX.
Best regards,
Konstantin Kolinko
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]