Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
50046692
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
50046692
编写于
3月 08, 2012
作者:
L
lana
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
5a9e218c
cb7a5f5c
变更
28
隐藏空白更改
内联
并排
Showing
28 changed file
with
1364 addition
and
208 deletion
+1364
-208
.hgtags
.hgtags
+1
-0
make/Makefile
make/Makefile
+12
-3
make/common/Release.gmk
make/common/Release.gmk
+6
-3
make/common/shared/Sanity-Settings.gmk
make/common/shared/Sanity-Settings.gmk
+2
-1
make/tools/src/build/tools/javazic/Mappings.java
make/tools/src/build/tools/javazic/Mappings.java
+16
-1
src/share/classes/java/lang/reflect/Executable.java
src/share/classes/java/lang/reflect/Executable.java
+14
-14
src/share/classes/java/util/Collections.java
src/share/classes/java/util/Collections.java
+9
-1
src/share/classes/sun/font/SunFontManager.java
src/share/classes/sun/font/SunFontManager.java
+0
-4
src/share/classes/sun/management/Agent.java
src/share/classes/sun/management/Agent.java
+140
-60
src/share/classes/sun/management/AgentConfigurationError.java
...share/classes/sun/management/AgentConfigurationError.java
+5
-1
src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java
.../classes/sun/management/jmxremote/ConnectorBootstrap.java
+96
-55
src/share/classes/sun/management/resources/agent.properties
src/share/classes/sun/management/resources/agent.properties
+8
-7
src/share/classes/sun/security/provider/PolicyFile.java
src/share/classes/sun/security/provider/PolicyFile.java
+4
-1
src/share/classes/sun/util/calendar/ZoneInfo.java
src/share/classes/sun/util/calendar/ZoneInfo.java
+33
-19
src/share/classes/sun/util/calendar/ZoneInfoFile.java
src/share/classes/sun/util/calendar/ZoneInfoFile.java
+22
-17
test/ProblemList.txt
test/ProblemList.txt
+13
-8
test/java/lang/instrument/ManifestTest.sh
test/java/lang/instrument/ManifestTest.sh
+5
-5
test/java/util/Collections/EqualsTest.java
test/java/util/Collections/EqualsTest.java
+67
-0
test/sun/management/AgentCheckTest.java
test/sun/management/AgentCheckTest.java
+5
-5
test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh
...anagement/jmxremote/bootstrap/GeneratePropertyPassword.sh
+8
-1
test/sun/management/jmxremote/startstop/JMXStartStopDoSomething.java
...nagement/jmxremote/startstop/JMXStartStopDoSomething.java
+52
-0
test/sun/management/jmxremote/startstop/JMXStartStopTest.java
.../sun/management/jmxremote/startstop/JMXStartStopTest.java
+181
-0
test/sun/management/jmxremote/startstop/JMXStartStopTest.sh
test/sun/management/jmxremote/startstop/JMXStartStopTest.sh
+603
-0
test/sun/management/jmxremote/startstop/REMOTE_TESTING.txt
test/sun/management/jmxremote/startstop/REMOTE_TESTING.txt
+11
-0
test/sun/management/jmxremote/startstop/management_cl.properties
...n/management/jmxremote/startstop/management_cl.properties
+2
-0
test/sun/management/jmxremote/startstop/management_jcmd.properties
...management/jmxremote/startstop/management_jcmd.properties
+3
-0
test/sun/security/provider/PolicyFile/NullCodeSource.java
test/sun/security/provider/PolicyFile/NullCodeSource.java
+44
-0
test/tools/launcher/Settings.java
test/tools/launcher/Settings.java
+2
-2
未找到文件。
.hgtags
浏览文件 @
50046692
...
...
@@ -149,3 +149,4 @@ dda27c73d8db4a9c7a23872b6f0c5106edcb2021 jdk8-b22
ec17fbe5b8fbc52da070eec43b4711d9354b2ab8 jdk8-b25
5aca406e87cb9144a9405be312dadd728a9c6fe2 jdk8-b26
c68342532e2e7deb3a25fc04ed3e4c142278f747 jdk8-b27
1e1d41daaded291ab3a370ca6a27f7325701978e jdk8-b28
make/Makefile
浏览文件 @
50046692
...
...
@@ -197,7 +197,7 @@ examples_help:
#
# 'all' target intro
#
all
::
all
::
@
$(ECHO)
$(PLATFORM)
$(ARCH)
$(RELEASE)
build started:
$(
shell
$(DATE)
'+%y-%m-%d %H:%M'
)
# Just in case anyone uses this old name, same as 'build'
...
...
@@ -234,7 +234,17 @@ all build:: sanity-all post-sanity-all
SUBDIRS
=
tools java javax sun com
SUBDIRS_tools
=
launchers
SUBDIRS_misc
=
org sunw jpda mkdemo mksample
SUBDIRS_misc
=
org sunw jpda
# demos
ifndef
NO_DEMOS
SUBDIRS_misc
+=
mkdemo
endif
# samples
ifndef
NO_SAMPLES
SUBDIRS_misc
+=
mksample
endif
# Alternate classes implementation
ifndef
OPENJDK
...
...
@@ -383,4 +393,3 @@ include jprt.gmk
.PHONY
:
all build clean clobber optimized debug fastdebug create_links
\
import import_product import_fastdebug import_debug
\
test test_run test_start test_clean test_summary
make/common/Release.gmk
浏览文件 @
50046692
...
...
@@ -234,7 +234,7 @@ images:: sanity-images post-sanity-images \
$(INITIAL_IMAGE_JRE) $(INITIAL_IMAGE_JDK) \
trim-image-jre trim-image-jdk \
identify-image-jre identify-image-jdk \
process-image-jre process-image-jdk sec-files sec-files-win jgss-files
process-image-jre process-image-jdk sec-files sec-files-win jgss-files
# Don't use these
image-jre:: initial-image-jre trim-image-jre identify-image-jre process-image-jre
...
...
@@ -496,7 +496,7 @@ $(JDK_IMAGE_DIR)/demo/DEMOS_LICENSE: $(SHARE_JDK_DOC_SRC)/DEMOS_LICENSE
$(JDK_IMAGE_DIR)/sample/SAMPLES_LICENSE: $(SHARE_JDK_DOC_SRC)/SAMPLES_LICENSE
$(process-doc-file)
# JRE files
# JRE files
$(JRE_IMAGE_DIR)/%: $(SHARE_JRE_DOC_SRC)/%
$(process-doc-file)
ifeq ($(PLATFORM), windows)
...
...
@@ -1095,8 +1095,12 @@ initial-image-jdk:: initial-image-jdk-setup \
@#
@# demo, include
@#
ifndef NO_DEMOS
$(CP) -r -f $(DEMODIR) $(JDK_IMAGE_DIR)
endif
ifndef NO_SAMPLES
$(CP) -r -f $(SAMPLEDIR) $(JDK_IMAGE_DIR)
endif
$(CP) -r $(INCLUDEDIR) $(JDK_IMAGE_DIR)
@#
@# Swing BeanInfo generation
...
...
@@ -1359,4 +1363,3 @@ images images-clobber::
# Force rule
FRC:
make/common/shared/Sanity-Settings.gmk
浏览文件 @
50046692
...
...
@@ -134,6 +134,8 @@ ALL_SETTINGS+=$(call addOptionalSetting,USE_HOTSPOT_INTERPRETER_MODE)
ALL_SETTINGS+=$(call addOptionalSetting,PEDANTIC)
ALL_SETTINGS+=$(call addOptionalSetting,DEV_ONLY)
ALL_SETTINGS+=$(call addOptionalSetting,NO_DOCS)
ALL_SETTINGS+=$(call addOptionalSetting,NO_DEMOS)
ALL_SETTINGS+=$(call addOptionalSetting,NO_SAMPLES)
ALL_SETTINGS+=$(call addOptionalSetting,NO_IMAGES)
ALL_SETTINGS+=$(call addOptionalSetting,TOOLS_ONLY)
ALL_SETTINGS+=$(call addOptionalSetting,INSANE)
...
...
@@ -263,4 +265,3 @@ ifdef OPENJDK
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_JRE_FILE)
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_RELEASE_IMAGE)
endif
make/tools/src/build/tools/javazic/Mappings.java
浏览文件 @
50046692
/*
* Copyright (c) 2000, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
2
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -26,6 +26,7 @@
package
build.tools.javazic
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -162,6 +163,20 @@ class Mappings {
for
(
String
key
:
toBeRemoved
)
{
aliases
.
remove
(
key
);
}
// Eliminate any alias-to-alias mappings. For example, if
// there are A->B and B->C, A->B is changed to A->C.
Map
<
String
,
String
>
newMap
=
new
HashMap
<
String
,
String
>();
for
(
String
key
:
aliases
.
keySet
())
{
String
realid
=
aliases
.
get
(
key
);
String
leaf
=
realid
;
while
(
aliases
.
get
(
leaf
)
!=
null
)
{
leaf
=
aliases
.
get
(
leaf
);
}
if
(!
realid
.
equals
(
leaf
))
{
newMap
.
put
(
key
,
leaf
);
}
}
aliases
.
putAll
(
newMap
);
}
Map
<
String
,
String
>
getAliases
()
{
...
...
src/share/classes/java/lang/reflect/Executable.java
浏览文件 @
50046692
...
...
@@ -180,7 +180,7 @@ public abstract class Executable extends AccessibleObject
/**
* Returns the {@code Class} object representing the class or interface
* that declares the
method represented by this executable
object.
* that declares the
executable represented by this
object.
*/
public
abstract
Class
<?>
getDeclaringClass
();
...
...
@@ -215,18 +215,18 @@ public abstract class Executable extends AccessibleObject
* Returns an array of {@code Class} objects that represent the formal
* parameter types, in declaration order, of the executable
* represented by this object. Returns an array of length
* 0 if the underlying
method
takes no parameters.
* 0 if the underlying
executable
takes no parameters.
*
* @return the parameter types for the
method
this object
* @return the parameter types for the
executable
this object
* represents
*/
public
abstract
Class
<?>[]
getParameterTypes
();
/**
* Returns an array of {@code Type} objects that represent the formal
* parameter types, in declaration order, of the
method
represented by
* this
executable
object. Returns an array of length 0 if the
* underlying
method
takes no parameters.
* parameter types, in declaration order, of the
executable
represented by
* this object. Returns an array of length 0 if the
* underlying
executable
takes no parameters.
*
* <p>If a formal parameter type is a parameterized type,
* the {@code Type} object returned for it must accurately reflect
...
...
@@ -236,16 +236,16 @@ public abstract class Executable extends AccessibleObject
* type, it is created. Otherwise, it is resolved.
*
* @return an array of {@code Type}s that represent the formal
* parameter types of the underlying
method
, in declaration order
* parameter types of the underlying
executable
, in declaration order
* @throws GenericSignatureFormatError
* if the generic method signature does not conform to the format
* specified in
* <cite>The Java™ Virtual Machine Specification</cite>
* @throws TypeNotPresentException if any of the parameter
* types of the underlying
method
refers to a non-existent type
* types of the underlying
executable
refers to a non-existent type
* declaration
* @throws MalformedParameterizedTypeException if any of
* the underlying
method
's parameter types refer to a parameterized
* the underlying
executable
's parameter types refer to a parameterized
* type that cannot be instantiated for any reason
*/
public
Type
[]
getGenericParameterTypes
()
{
...
...
@@ -277,15 +277,15 @@ public abstract class Executable extends AccessibleObject
* type, it is created. Otherwise, it is resolved.
*
* @return an array of Types that represent the exception types
* thrown by the underlying
method
* thrown by the underlying
executable
* @throws GenericSignatureFormatError
* if the generic method signature does not conform to the format
* specified in
* <cite>The Java™ Virtual Machine Specification</cite>
* @throws TypeNotPresentException if the underlying
method
's
* @throws TypeNotPresentException if the underlying
executable
's
* {@code throws} clause refers to a non-existent type declaration
* @throws MalformedParameterizedTypeException if
* the underlying
method
's {@code throws} clause refers to a
* the underlying
executable
's {@code throws} clause refers to a
* parameterized type that cannot be instantiated for any reason
*/
public
Type
[]
getGenericExceptionTypes
()
{
...
...
@@ -330,7 +330,7 @@ public abstract class Executable extends AccessibleObject
* Returns an array of arrays that represent the annotations on
* the formal parameters, in declaration order, of the executable
* represented by this object. (Returns an array of length zero if
* the underlying
method
is parameterless. If the executable has
* the underlying
executable
is parameterless. If the executable has
* one or more parameters, a nested array of length zero is
* returned for each parameter with no annotations.) The
* annotation objects contained in the returned arrays are
...
...
@@ -339,7 +339,7 @@ public abstract class Executable extends AccessibleObject
* to other callers.
*
* @return an array of arrays that represent the annotations on the formal
* parameters, in declaration order, of the exec
tu
able represented by this
* parameters, in declaration order, of the exec
ut
able represented by this
* object
*/
public
abstract
Annotation
[][]
getParameterAnnotations
();
...
...
src/share/classes/java/util/Collections.java
浏览文件 @
50046692
/*
* Copyright (c) 1997, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
2
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -1489,6 +1489,8 @@ public class Collections {
}
public
int
hashCode
()
{
return
e
.
hashCode
();}
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(!(
o
instanceof
Map
.
Entry
))
return
false
;
Map
.
Entry
t
=
(
Map
.
Entry
)
o
;
...
...
@@ -1709,6 +1711,8 @@ public class Collections {
}
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
synchronized
(
mutex
)
{
return
c
.
equals
(
o
);}
}
public
int
hashCode
()
{
...
...
@@ -1863,6 +1867,8 @@ public class Collections {
}
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
synchronized
(
mutex
)
{
return
list
.
equals
(
o
);}
}
public
int
hashCode
()
{
...
...
@@ -2073,6 +2079,8 @@ public class Collections {
}
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
synchronized
(
mutex
)
{
return
m
.
equals
(
o
);}
}
public
int
hashCode
()
{
...
...
src/share/classes/sun/font/SunFontManager.java
浏览文件 @
50046692
...
...
@@ -2619,10 +2619,6 @@ public abstract class SunFontManager implements FontSupport, FontManagerForSGE {
physicalFonts
.
remove
(
oldFont
.
fullName
);
fullNameToFont
.
remove
(
oldFont
.
fullName
.
toLowerCase
(
Locale
.
ENGLISH
));
FontFamily
.
remove
(
oldFont
);
if
(
oldFont
instanceof
FileFont
)
{
((
FileFont
)
oldFont
).
deregisterFontAndClearStrikeCache
();
}
if
(
localeFullNamesToFont
!=
null
)
{
Map
.
Entry
[]
mapEntries
=
(
Map
.
Entry
[])
localeFullNamesToFont
.
entrySet
().
...
...
src/share/classes/sun/management/Agent.java
浏览文件 @
50046692
/*
* Copyright (c) 2003, 20
05
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
12
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -25,30 +25,34 @@
package
sun.management
;
import
java.io.BufferedInputStream
;
import
java.io.File
;
import
java.io.InputStream
;
import
java.io.FileInputStream
;
import
java.io.BufferedInputStream
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.Method
;
import
java.lang.management.ManagementFactory
;
import
java.text.MessageFormat
;
import
java.util.MissingResourceException
;
import
java.util.Properties
;
import
java.util.ResourceBundle
;
import
java.util.MissingResourceException
;
import
java.lang.management.ManagementFactory
;
import
java.lang.reflect.Method
;
import
javax.management.remote.JMXConnectorServer
;
import
sun.management.jmxremote.ConnectorBootstrap
;
import
static
sun
.
management
.
AgentConfigurationError
.*;
import
sun.management.jmxremote.ConnectorBootstrap
;
import
sun.misc.VMSupport
;
/**
* This Agent is started by the VM when -Dcom.sun.management.snmp
* or -Dcom.sun.management.jmxremote is set. This class will be
* loaded by the system class loader.
* loaded by the system class loader. Also jmx framework could
* be started by jcmd
*/
public
class
Agent
{
// management properties
...
...
@@ -69,7 +73,33 @@ public class Agent {
"com.sun.management.jmxremote.localConnectorAddress"
;
private
static
final
String
SNMP_ADAPTOR_BOOTSTRAP_CLASS_NAME
=
"sun.management.snmp.AdaptorBootstrap"
;
"sun.management.snmp.AdaptorBootstrap"
;
// The only active agent allowed
private
static
JMXConnectorServer
jmxServer
=
null
;
// Parse string com.sun.management.prop=xxx,com.sun.management.prop=yyyy
// and return property set if args is null or empty
// return empty property set
private
static
Properties
parseString
(
String
args
){
Properties
argProps
=
new
Properties
();
if
(
args
!=
null
)
{
for
(
String
option
:
args
.
split
(
","
))
{
String
s
[]
=
option
.
split
(
"="
,
2
);
String
name
=
s
[
0
].
trim
();
String
value
=
(
s
.
length
>
1
)
?
s
[
1
].
trim
()
:
""
;
if
(!
name
.
startsWith
(
"com.sun.management."
))
{
error
(
INVALID_OPTION
,
name
);
}
argProps
.
setProperty
(
name
,
value
);
}
}
return
argProps
;
}
// invoked by -javaagent or -Dcom.sun.management.agent.class
public
static
void
premain
(
String
args
)
throws
Exception
{
...
...
@@ -82,37 +112,104 @@ public class Agent {
args
=
JMXREMOTE
;
// default to local management
}
// Parse agent options into properties
Properties
arg_props
=
parseString
(
args
);
Properties
arg_props
=
new
Properties
();
if
(
args
!=
null
)
{
String
[]
options
=
args
.
split
(
","
);
for
(
int
i
=
0
;
i
<
options
.
length
;
i
++)
{
String
[]
option
=
options
[
i
].
split
(
"="
);
if
(
option
.
length
>=
1
&&
option
.
length
<=
2
)
{
String
name
=
option
[
0
];
String
value
=
(
option
.
length
==
1
)
?
""
:
option
[
1
];
if
(
name
!=
null
&&
name
.
length
()
>
0
)
{
// Assume that any com.sun.management.* options are okay
if
(
name
.
startsWith
(
"com.sun.management."
))
{
arg_props
.
setProperty
(
name
,
value
);
}
else
{
error
(
INVALID_OPTION
,
name
);
}
}
}
// Read properties from the config file
Properties
config_props
=
new
Properties
();
String
fname
=
arg_props
.
getProperty
(
CONFIG_FILE
);
readConfiguration
(
fname
,
config_props
);
// Arguments override config file
config_props
.
putAll
(
arg_props
);
startAgent
(
config_props
);
}
// jcmd ManagementAgent.start_local entry point
// Also called due to command-line via startAgent()
private
static
synchronized
void
startLocalManagementAgent
(){
Properties
agentProps
=
VMSupport
.
getAgentProperties
();
// start local connector if not started
if
(
agentProps
.
get
(
LOCAL_CONNECTOR_ADDRESS_PROP
)
==
null
)
{
JMXConnectorServer
cs
=
ConnectorBootstrap
.
startLocalConnectorServer
();
String
address
=
cs
.
getAddress
().
toString
();
// Add the local connector address to the agent properties
agentProps
.
put
(
LOCAL_CONNECTOR_ADDRESS_PROP
,
address
);
try
{
// export the address to the instrumentation buffer
ConnectorAddressLink
.
export
(
address
);
}
catch
(
Exception
x
)
{
// Connector server started but unable to export address
// to instrumentation buffer - non-fatal error.
warning
(
EXPORT_ADDRESS_FAILED
,
x
.
getMessage
());
}
}
}
// Read properties from the config file
Properties
config_props
=
new
Properties
();
String
fname
=
arg_props
.
getProperty
(
CONFIG_FILE
);
readConfiguration
(
fname
,
config_props
);
// jcmd ManagementAgent.start entry point
// This method starts the remote JMX agent and starts neither
// the local JMX agent nor the SNMP agent
// @see #startLocalManagementAgent and also @see #startAgent.
private
static
synchronized
void
startRemoteManagementAgent
(
String
args
)
throws
Exception
{
if
(
jmxServer
!=
null
)
{
throw
new
RuntimeException
(
getText
(
INVALID_STATE
,
"Agent already started"
));
}
Properties
argProps
=
parseString
(
args
);
Properties
configProps
=
new
Properties
();
// Load the management properties from the config file
// if config file is not specified readConfiguration implicitly
// reads <java.home>/lib/management/management.properties
// Arguments override config file
config_props
.
putAll
(
arg_props
);
startAgent
(
config_props
);
String
fname
=
System
.
getProperty
(
CONFIG_FILE
);
readConfiguration
(
fname
,
configProps
);
// management properties can be overridden by system properties
// which take precedence
configProps
.
putAll
(
System
.
getProperties
());
// if user specifies config file into command line for either
// jcmd utilities or attach command it overrides properties set in
// command line at the time of VM start
String
fnameUser
=
argProps
.
getProperty
(
CONFIG_FILE
);
if
(
fnameUser
!=
null
)
{
readConfiguration
(
fnameUser
,
configProps
);
}
// arguments specified in command line of jcmd utilities
// override both system properties and one set by config file
// specified in jcmd command line
configProps
.
putAll
(
argProps
);
// jcmd doesn't allow to change ThreadContentionMonitoring, but user
// can specify this property inside config file, so enable optional
// monitoring functionality if this property is set
final
String
enableThreadContentionMonitoring
=
configProps
.
getProperty
(
ENABLE_THREAD_CONTENTION_MONITORING
);
if
(
enableThreadContentionMonitoring
!=
null
)
{
ManagementFactory
.
getThreadMXBean
().
setThreadContentionMonitoringEnabled
(
true
);
}
String
jmxremotePort
=
configProps
.
getProperty
(
JMXREMOTE_PORT
);
if
(
jmxremotePort
!=
null
)
{
jmxServer
=
ConnectorBootstrap
.
startRemoteConnectorServer
(
jmxremotePort
,
configProps
);
}
}
private
static
synchronized
void
stopRemoteManagementAgent
()
throws
Exception
{
if
(
jmxServer
!=
null
)
{
ConnectorBootstrap
.
unexportRegistry
();
// Attempt to stop already stopped agent
// Don't cause any errors.
jmxServer
.
stop
();
jmxServer
=
null
;
}
}
private
static
void
startAgent
(
Properties
props
)
throws
Exception
{
...
...
@@ -130,7 +227,7 @@ public class Agent {
try
{
if
(
snmpPort
!=
null
)
{
loadSnmpAgent
(
snmpPort
,
props
);
loadSnmpAgent
(
snmpPort
,
props
);
}
/*
...
...
@@ -142,31 +239,14 @@ public class Agent {
* of this "local" server is exported as a counter to the jstat
* instrumentation buffer.
*/
if
(
jmxremote
!=
null
||
jmxremotePort
!=
null
)
{
if
(
jmxremote
!=
null
||
jmxremotePort
!=
null
)
{
if
(
jmxremotePort
!=
null
)
{
ConnectorBootstrap
.
initialize
(
jmxremotePort
,
props
);
jmxServer
=
ConnectorBootstrap
.
startRemoteConnectorServer
(
jmxremotePort
,
props
);
}
startLocalManagementAgent
();
}
Properties
agentProps
=
VMSupport
.
getAgentProperties
();
// start local connector if not started
// System.out.println("local address : " +
// agentProps.get(LOCAL_CONNECTOR_ADDRESS_PROP));
if
(
agentProps
.
get
(
LOCAL_CONNECTOR_ADDRESS_PROP
)
==
null
)
{
JMXConnectorServer
cs
=
ConnectorBootstrap
.
startLocalConnectorServer
();
String
address
=
cs
.
getAddress
().
toString
();
// Add the local connector address to the agent properties
agentProps
.
put
(
LOCAL_CONNECTOR_ADDRESS_PROP
,
address
);
try
{
// export the address to the instrumentation buffer
ConnectorAddressLink
.
export
(
address
);
}
catch
(
Exception
x
)
{
// Connector server started but unable to export address
// to instrumentation buffer - non-fatal error.
warning
(
EXPORT_ADDRESS_FAILED
,
x
.
getMessage
());
}
}
}
}
catch
(
AgentConfigurationError
e
)
{
error
(
e
.
getError
(),
e
.
getParams
());
}
catch
(
Exception
e
)
{
...
...
@@ -187,9 +267,9 @@ public class Agent {
props
.
putAll
(
System
.
getProperties
());
return
props
;
}
}
public
static
synchronized
Properties
getManagementProperties
()
{
public
static
synchronized
Properties
getManagementProperties
()
{
if
(
mgmtProps
==
null
)
{
String
configFile
=
System
.
getProperty
(
CONFIG_FILE
);
String
snmpPort
=
System
.
getProperty
(
SNMP_PORT
);
...
...
src/share/classes/sun/management/AgentConfigurationError.java
浏览文件 @
50046692
/*
* Copyright (c) 2004, 20
05
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 20
12
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -53,6 +53,8 @@ public class AgentConfigurationError extends Error {
"agent.err.invalid.agentclass"
;
public
static
final
String
INVALID_JMXREMOTE_PORT
=
"agent.err.invalid.jmxremote.port"
;
public
static
final
String
INVALID_JMXREMOTE_RMI_PORT
=
"agent.err.invalid.jmxremote.rmi.port"
;
public
static
final
String
PASSWORD_FILE_NOT_SET
=
"agent.err.password.file.notset"
;
public
static
final
String
PASSWORD_FILE_NOT_READABLE
=
...
...
@@ -105,6 +107,8 @@ public class AgentConfigurationError extends Error {
"agent.err.snmp.adaptor.start.failed"
;
public
static
final
String
SNMP_MIB_INIT_FAILED
=
"agent.err.snmp.mib.init.failed"
;
public
static
final
String
INVALID_STATE
=
"agent.err.invalid.state"
;
private
final
String
error
;
private
final
String
[]
params
;
...
...
src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java
浏览文件 @
50046692
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
12
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -28,25 +28,22 @@ package sun.management.jmxremote;
import
java.io.BufferedInputStream
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.InputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.lang.management.ManagementFactory
;
import
java.net.InetAddress
;
import
java.net.MalformedURLException
;
import
java.net.UnknownHostException
;
import
java.rmi.NoSuchObjectException
;
import
java.rmi.Remote
;
import
java.rmi.RemoteException
;
import
java.rmi.registry.Registry
;
import
java.rmi.server.RemoteObject
;
import
java.rmi.server.RMIClientSocketFactory
;
import
java.rmi.server.RMIServerSocketFactory
;
import
java.rmi.server.RemoteObject
;
import
java.rmi.server.UnicastRemoteObject
;
import
java.security.KeyStore
;
import
java.security.Principal
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.Iterator
;
...
...
@@ -55,35 +52,31 @@ import java.util.Properties;
import
java.util.Set
;
import
java.util.StringTokenizer
;
import
java.lang.management.ManagementFactory
;
import
javax.net.ssl.*
;
import
javax.management.MBeanServer
;
import
javax.management.remote.JMXAuthenticator
;
import
javax.management.remote.JMXConnectorServer
;
import
javax.management.remote.JMXConnectorServerFactory
;
import
javax.management.remote.JMXServiceURL
;
import
javax.management.remote.rmi.RMIConnectorServer
;
import
javax.net.ssl.KeyManagerFactory
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.TrustManagerFactory
;
import
javax.rmi.ssl.SslRMIClientSocketFactory
;
import
javax.rmi.ssl.SslRMIServerSocketFactory
;
import
javax.security.auth.Subject
;
import
sun.rmi.server.UnicastRef
;
import
sun.rmi.server.UnicastServerRef
;
import
sun.rmi.server.UnicastServerRef2
;
import
com.sun.jmx.remote.internal.RMIExporter
;
import
com.sun.jmx.remote.security.JMXPluggableAuthenticator
;
import
com.sun.jmx.remote.util.ClassLogger
;
import
sun.management.Agent
;
import
sun.management.AgentConfigurationError
;
import
static
sun
.
management
.
AgentConfigurationError
.*;
import
sun.management.ConnectorAddressLink
;
import
sun.management.FileSystem
;
import
com.sun.jmx.remote.util.ClassLogger
;
import
com.sun.jmx.remote.internal.RMIExporter
;
import
com.sun.jmx.remote.security.JMXPluggableAuthenticator
;
import
sun.rmi.server.UnicastRef
;
import
sun.rmi.server.UnicastServerRef
;
import
sun.rmi.server.UnicastServerRef2
;
/**
* This class initializes and starts the RMIConnectorServer for JSR 163
...
...
@@ -114,6 +107,8 @@ public final class ConnectorBootstrap {
public
static
final
String
PORT
=
"com.sun.management.jmxremote.port"
;
public
static
final
String
RMI_PORT
=
"com.sun.management.jmxremote.rmi.port"
;
public
static
final
String
CONFIG_FILE_NAME
=
"com.sun.management.config.file"
;
public
static
final
String
USE_LOCAL_ONLY
=
...
...
@@ -266,34 +261,61 @@ public final class ConnectorBootstrap {
private
final
String
accessFile
;
}
/**
* Initializes and starts the JMX Connector Server.
* If the com.sun.management.jmxremote.port property is not defined,
* simply return. Otherwise, attempts to load the config file, and
* then calls {@link #initialize(java.lang.String, java.util.Properties)}.
*
**/
public
static
synchronized
JMXConnectorServer
initialize
()
{
// The variable below is here to support stop functionality
// It would be overriten if you call startRemoteCommectionServer second
// time. It's OK for now as logic in Agent.java forbids mutiple agents
private
static
Registry
registry
=
null
;
// Load a new management properties
final
Properties
props
=
Agent
.
loadManagementProperties
();
if
(
props
==
null
)
{
return
null
;
public
static
void
unexportRegistry
()
{
// Remove the entry from registry
try
{
if
(
registry
!=
null
)
{
UnicastRemoteObject
.
unexportObject
(
registry
,
true
);
registry
=
null
;
}
}
catch
(
NoSuchObjectException
ex
)
{
// This exception can appears only if we attempt
// to unexportRegistry second time. So it's safe
// to ignore it without additional messages.
}
}
final
String
portStr
=
props
.
getProperty
(
PropertyNames
.
PORT
);
/**
* Initializes and starts the JMX Connector Server.
* If the com.sun.management.jmxremote.port property is not defined,
* simply return. Otherwise, attempts to load the config file, and
* then calls {@link #startRemoteConnectorServer
* (java.lang.String, java.util.Properties)}.
*
* This method is used by some jtreg tests.
**/
public
static
synchronized
JMXConnectorServer
initialize
()
{
// Load a new management properties
final
Properties
props
=
Agent
.
loadManagementProperties
();
if
(
props
==
null
)
{
return
null
;
}
final
String
portStr
=
props
.
getProperty
(
PropertyNames
.
PORT
);
return
startRemoteConnectorServer
(
portStr
,
props
);
}
// System.out.println("initializing: {port=" + portStr + ",
// properties="+props+"}");
return
initialize
(
portStr
,
props
);
/**
* This method is used by some jtreg tests.
*
* @see #startRemoteConnectorServer
* (String portStr, Properties props)
*/
public
static
synchronized
JMXConnectorServer
initialize
(
String
portStr
,
Properties
props
)
{
return
startRemoteConnectorServer
(
portStr
,
props
);
}
/**
* Initializes and starts a JMX Connector Server for remote
* monitoring and management.
**/
public
static
synchronized
JMXConnectorServer
initialize
(
String
portStr
,
Properties
props
)
{
public
static
synchronized
JMXConnectorServer
startRemoteConnectorServer
(
String
portStr
,
Properties
props
)
{
// Get port number
final
int
port
;
...
...
@@ -306,6 +328,22 @@ public final class ConnectorBootstrap {
throw
new
AgentConfigurationError
(
INVALID_JMXREMOTE_PORT
,
portStr
);
}
// User can specify a port to be used to export rmi object,
// in order to simplify firewall rules
// if port is not specified random one will be allocated.
int
rmiPort
=
0
;
String
rmiPortStr
=
props
.
getProperty
(
PropertyNames
.
RMI_PORT
);
try
{
if
(
rmiPortStr
!=
null
)
{
rmiPort
=
Integer
.
parseInt
(
rmiPortStr
);
}
}
catch
(
NumberFormatException
x
)
{
throw
new
AgentConfigurationError
(
INVALID_JMXREMOTE_RMI_PORT
,
x
,
rmiPortStr
);
}
if
(
rmiPort
<
0
)
{
throw
new
AgentConfigurationError
(
INVALID_JMXREMOTE_RMI_PORT
,
rmiPortStr
);
}
// Do we use authentication?
final
String
useAuthenticationStr
=
props
.
getProperty
(
PropertyNames
.
USE_AUTHENTICATION
,
...
...
@@ -387,9 +425,10 @@ public final class ConnectorBootstrap {
}
if
(
log
.
debugOn
())
{
log
.
debug
(
"
initialize
"
,
Agent
.
getText
(
"jmxremote.ConnectorBootstrap.
initialize
"
)
+
log
.
debug
(
"
startRemoteConnectorServer
"
,
Agent
.
getText
(
"jmxremote.ConnectorBootstrap.
starting
"
)
+
"\n\t"
+
PropertyNames
.
PORT
+
"="
+
port
+
"\n\t"
+
PropertyNames
.
RMI_PORT
+
"="
+
rmiPort
+
"\n\t"
+
PropertyNames
.
USE_SSL
+
"="
+
useSsl
+
"\n\t"
+
PropertyNames
.
USE_REGISTRY_SSL
+
"="
+
useRegistrySsl
+
"\n\t"
+
PropertyNames
.
SSL_CONFIG_FILE_NAME
+
"="
+
sslConfigFileName
+
...
...
@@ -404,7 +443,7 @@ public final class ConnectorBootstrap {
(
useAuthentication
?
(
loginConfigName
==
null
?
(
"\n\t"
+
PropertyNames
.
PASSWORD_FILE_NAME
+
"="
+
passwordFileName
)
:
(
"\n\t"
+
PropertyNames
.
LOGIN_CONFIG_NAME
+
"="
+
loginConfigName
))
:
"\n\t"
+
Agent
.
getText
(
"jmxremote.ConnectorBootstrap.
initialize.
noAuthentication"
))
+
Agent
.
getText
(
"jmxremote.ConnectorBootstrap.noAuthentication"
))
+
(
useAuthentication
?
(
"\n\t"
+
PropertyNames
.
ACCESS_FILE_NAME
+
"="
+
accessFileName
)
:
""
)
+
""
);
...
...
@@ -415,15 +454,15 @@ public final class ConnectorBootstrap {
JMXServiceURL
url
=
null
;
try
{
final
JMXConnectorServerData
data
=
exportMBeanServer
(
mbs
,
port
,
useSsl
,
useRegistrySsl
,
mbs
,
port
,
rmiPort
,
useSsl
,
useRegistrySsl
,
sslConfigFileName
,
enabledCipherSuitesList
,
enabledProtocolsList
,
sslNeedClientAuth
,
useAuthentication
,
loginConfigName
,
passwordFileName
,
accessFileName
);
cs
=
data
.
jmxConnectorServer
;
url
=
data
.
jmxRemoteURL
;
log
.
config
(
"
initialize
"
,
Agent
.
getText
(
"jmxremote.ConnectorBootstrap.
initialize.
ready"
,
log
.
config
(
"
startRemoteConnectorServer
"
,
Agent
.
getText
(
"jmxremote.ConnectorBootstrap.ready"
,
url
.
toString
()));
}
catch
(
Exception
e
)
{
throw
new
AgentConfigurationError
(
AGENT_EXCEPTION
,
e
,
e
.
toString
());
...
...
@@ -442,7 +481,7 @@ public final class ConnectorBootstrap {
// Remote connector server started but unable to export remote
// connector address and associated configuration properties to
// the instrumentation buffer - non-fatal error.
log
.
debug
(
"
initialize
"
,
e
);
log
.
debug
(
"
startRemoteConnectorServer
"
,
e
);
}
return
cs
;
}
...
...
@@ -517,9 +556,9 @@ public final class ConnectorBootstrap {
try
{
if
(
fs
.
supportsFileSecurity
(
file
))
{
if
(!
fs
.
isAccessUserOnly
(
file
))
{
final
String
msg
=
Agent
.
getText
(
"jmxremote.ConnectorBootstrap.
initialize.
password.readonly"
,
final
String
msg
=
Agent
.
getText
(
"jmxremote.ConnectorBootstrap.password.readonly"
,
passwordFileName
);
log
.
config
(
"
initialize
"
,
msg
);
log
.
config
(
"
startRemoteConnectorServer
"
,
msg
);
throw
new
AgentConfigurationError
(
PASSWORD_FILE_ACCESS_NOT_RESTRICTED
,
passwordFileName
);
}
...
...
@@ -560,9 +599,9 @@ public final class ConnectorBootstrap {
if
(
fs
.
supportsFileSecurity
(
file
))
{
if
(!
fs
.
isAccessUserOnly
(
file
))
{
final
String
msg
=
Agent
.
getText
(
"jmxremote.ConnectorBootstrap.
initialize.
file.readonly"
,
"jmxremote.ConnectorBootstrap.file.readonly"
,
restrictedFileName
);
log
.
config
(
"
initialize
"
,
msg
);
log
.
config
(
"
startRemoteConnectorServer
"
,
msg
);
throw
new
AgentConfigurationError
(
FILE_ACCESS_NOT_RESTRICTED
,
restrictedFileName
);
}
...
...
@@ -662,6 +701,7 @@ public final class ConnectorBootstrap {
private
static
JMXConnectorServerData
exportMBeanServer
(
MBeanServer
mbs
,
int
port
,
int
rmiPort
,
boolean
useSsl
,
boolean
useRegistrySsl
,
String
sslConfigFileName
,
...
...
@@ -679,7 +719,7 @@ public final class ConnectorBootstrap {
* IDs. */
System
.
setProperty
(
"java.rmi.server.randomIDs"
,
"true"
);
JMXServiceURL
url
=
new
JMXServiceURL
(
"rmi"
,
null
,
0
);
JMXServiceURL
url
=
new
JMXServiceURL
(
"rmi"
,
null
,
rmiPort
);
Map
<
String
,
Object
>
env
=
new
HashMap
<>();
...
...
@@ -736,7 +776,6 @@ public final class ConnectorBootstrap {
}
}
final
Registry
registry
;
if
(
useRegistrySsl
)
{
registry
=
new
SingleEntryRegistry
(
port
,
csf
,
ssf
,
...
...
@@ -747,10 +786,12 @@ public final class ConnectorBootstrap {
"jmxrmi"
,
exporter
.
firstExported
);
}
JMXServiceURL
remoteURL
=
new
JMXServiceURL
(
"service:jmx:rmi:///jndi/rmi://"
+
url
.
getHost
()
+
":"
+
((
UnicastRef
)
((
RemoteObject
)
registry
).
getRef
()).
getLiveRef
().
getPort
()
+
"/jmxrmi"
);
int
registryPort
=
((
UnicastRef
)
((
RemoteObject
)
registry
).
getRef
()).
getLiveRef
().
getPort
();
String
jmxUrlStr
=
String
.
format
(
"service:jmx:rmi:///jndi/rmi://%s:%d/jmxrmi"
,
url
.
getHost
(),
registryPort
);
JMXServiceURL
remoteURL
=
new
JMXServiceURL
(
jmxUrlStr
);
/* Our exporter remembers the first object it was asked to
export, which will be an RMIServerImpl appropriate for
...
...
src/share/classes/sun/management/resources/agent.properties
浏览文件 @
50046692
#
#
# Copyright (c) 2004, 20
05
, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2004, 20
12
, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
...
...
@@ -43,8 +43,9 @@ agent.err.agentclass.failed = Management agent class failed
agent.err.premain.notfound
=
premain(String) does not exist in agent class
agent.err.agentclass.access.denied
=
Access to premain(String) is denied
agent.err.invalid.agentclass
=
Invalid com.sun.management.agent.class property value
agent.err.invalid.state
=
Invalid agent state
agent.err.invalid.jmxremote.port
=
Invalid com.sun.management.jmxremote.port number
agent.err.invalid.jmxremote.rmi.port
=
Invalid com.sun.management.jmxremote.rmi.port number
agent.err.file.not.set
=
File not specified
agent.err.file.not.readable
=
File not readable
...
...
@@ -78,11 +79,11 @@ agent.err.acl.file.access.notrestricted = Password file read access must be rest
agent.err.snmp.adaptor.start.failed
=
Failed to start SNMP adaptor with address
agent.err.snmp.mib.init.failed
=
Failed to initialize SNMP MIB with error
jmxremote.ConnectorBootstrap.
initialize
=
Starting JMX Connector Server:
jmxremote.ConnectorBootstrap.
initialize.
noAuthentication
=
No Authentication
jmxremote.ConnectorBootstrap.
initialize.
ready
=
JMX Connector ready at: {0}
jmxremote.ConnectorBootstrap.
initialize.
password.readonly
=
Password file read access must be restricted: {0}
jmxremote.ConnectorBootstrap.
initialize.
file.readonly
=
File read access must be restricted: {0}
jmxremote.ConnectorBootstrap.
starting
=
Starting JMX Connector Server:
jmxremote.ConnectorBootstrap.noAuthentication
=
No Authentication
jmxremote.ConnectorBootstrap.ready
=
JMX Connector ready at: {0}
jmxremote.ConnectorBootstrap.password.readonly
=
Password file read access must be restricted: {0}
jmxremote.ConnectorBootstrap.file.readonly
=
File read access must be restricted: {0}
jmxremote.AdaptorBootstrap.getTargetList.processing
=
Processing ACL
jmxremote.AdaptorBootstrap.getTargetList.adding
=
Adding target: {0}
...
...
src/share/classes/sun/security/provider/PolicyFile.java
浏览文件 @
50046692
...
...
@@ -1246,7 +1246,10 @@ public class PolicyFile extends java.security.Policy {
* @return the set of permissions according to the policy.
*/
private
PermissionCollection
getPermissions
(
Permissions
perms
,
final
CodeSource
cs
)
{
final
CodeSource
cs
)
{
if
(
cs
==
null
)
return
perms
;
CodeSource
canonCodeSource
=
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
<
CodeSource
>(){
...
...
src/share/classes/sun/util/calendar/ZoneInfo.java
浏览文件 @
50046692
/*
* Copyright (c) 2000, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
2
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -79,13 +79,18 @@ public class ZoneInfo extends TimeZone {
private
static
final
int
TRANSITION_NSHIFT
=
12
;
// Flag for supporting JDK backward compatible IDs, such as "EST".
private
static
final
boolean
USE_OLDMAPPING
;
static
final
boolean
USE_OLDMAPPING
;
static
{
String
oldmapping
=
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetPropertyAction
(
"sun.timezone.ids.oldmapping"
,
"false"
)).
toLowerCase
(
Locale
.
ROOT
);
USE_OLDMAPPING
=
(
oldmapping
.
equals
(
"yes"
)
||
oldmapping
.
equals
(
"true"
));
}
// IDs having conflicting data between Olson and JDK 1.1
static
final
String
[]
conflictingIDs
=
{
"EST"
,
"MST"
,
"HST"
};
private
static
final
CalendarSystem
gcal
=
CalendarSystem
.
getGregorianCalendar
();
/**
...
...
@@ -808,32 +813,41 @@ public class ZoneInfo extends TimeZone {
private
static
SoftReference
<
Map
<
String
,
String
>>
aliasTable
;
/**
* Returns a Map from alias time zone IDs to their standard
* time zone IDs.
*
* @return the Map that holds the mappings from alias time zone IDs
* to their standard time zone IDs, or null if
* <code>ZoneInfoMappings</code> file is not available.
*/
public
synchronized
static
Map
<
String
,
String
>
getAliasTable
()
{
static
Map
<
String
,
String
>
getCachedAliasTable
()
{
Map
<
String
,
String
>
aliases
=
null
;
SoftReference
<
Map
<
String
,
String
>>
cache
=
aliasTable
;
if
(
cache
!=
null
)
{
aliases
=
cache
.
get
();
if
(
aliases
!=
null
)
{
return
aliases
;
}
}
aliases
=
ZoneInfoFile
.
getZoneAliases
();
if
(
aliases
!=
null
)
{
aliasTable
=
new
SoftReference
<>(
aliases
);
}
return
aliases
;
}
/**
* Returns a Map from alias time zone IDs to their standard
* time zone IDs.
*
* @return the Map that holds the mappings from alias time zone IDs
* to their standard time zone IDs, or null if
* <code>ZoneInfoMappings</code> file is not available.
*/
public
synchronized
static
Map
<
String
,
String
>
getAliasTable
()
{
Map
<
String
,
String
>
aliases
=
getCachedAliasTable
();
if
(
aliases
==
null
)
{
aliases
=
ZoneInfoFile
.
getZoneAliases
();
if
(
aliases
!=
null
)
{
if
(!
USE_OLDMAPPING
)
{
// Remove the conflicting IDs from the alias table.
for
(
String
key
:
conflictingIDs
)
{
aliases
.
remove
(
key
);
}
}
aliasTable
=
new
SoftReference
<
Map
<
String
,
String
>>(
aliases
);
}
}
return
aliases
;
}
private
void
readObject
(
ObjectInputStream
stream
)
throws
IOException
,
ClassNotFoundException
{
stream
.
defaultReadObject
();
...
...
src/share/classes/sun/util/calendar/ZoneInfoFile.java
浏览文件 @
50046692
/*
* Copyright (c) 2000, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
2
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -473,6 +473,8 @@ public class ZoneInfoFile {
private
static
Map
<
String
,
ZoneInfo
>
zoneInfoObjects
=
null
;
private
static
final
ZoneInfo
GMT
=
new
ZoneInfo
(
"GMT"
,
0
);
private
static
final
String
ziDir
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
String
>()
{
public
String
run
()
{
...
...
@@ -553,8 +555,15 @@ public class ZoneInfoFile {
* id.
*/
public
static
ZoneInfo
getZoneInfo
(
String
id
)
{
//treat GMT zone as special
if
(
"GMT"
.
equals
(
id
))
return
(
ZoneInfo
)
GMT
.
clone
();
ZoneInfo
zi
=
getFromCache
(
id
);
if
(
zi
==
null
)
{
Map
<
String
,
String
>
aliases
=
ZoneInfo
.
getCachedAliasTable
();
if
(
aliases
!=
null
&&
aliases
.
get
(
id
)
!=
null
)
{
return
null
;
}
zi
=
createZoneInfo
(
id
);
if
(
zi
==
null
)
{
return
null
;
...
...
@@ -1031,30 +1040,26 @@ public class ZoneInfoFile {
* @return the buffer, or null if any I/O error occurred.
*/
private
static
byte
[]
readZoneInfoFile
(
final
String
fileName
)
{
if
(
fileName
.
indexOf
(
".."
)
>=
0
)
{
return
null
;
}
byte
[]
buffer
=
null
;
try
{
buffer
=
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
byte
[]>()
{
public
byte
[]
run
()
throws
IOException
{
File
file
=
new
File
(
ziDir
,
fileName
);
if
(!
file
.
exists
()
||
!
file
.
isFile
())
{
return
null
;
}
file
=
file
.
getCanonicalFile
();
String
path
=
file
.
getCanonicalPath
();
byte
[]
buf
=
null
;
if
(
path
!=
null
&&
path
.
startsWith
(
ziDir
))
{
int
filesize
=
(
int
)
file
.
length
();
if
(
filesize
>
0
)
{
FileInputStream
fis
=
new
FileInputStream
(
file
);
buf
=
new
byte
[
filesize
];
try
{
if
(
fis
.
read
(
buf
)
!=
filesize
)
{
throw
new
IOException
(
"read error on "
+
fileName
);
}
}
finally
{
fis
.
close
();
int
filesize
=
(
int
)
file
.
length
();
if
(
filesize
>
0
)
{
FileInputStream
fis
=
new
FileInputStream
(
file
);
buf
=
new
byte
[
filesize
];
try
{
if
(
fis
.
read
(
buf
)
!=
filesize
)
{
throw
new
IOException
(
"read error on "
+
fileName
);
}
}
finally
{
fis
.
close
();
}
}
return
buf
;
...
...
test/ProblemList.txt
浏览文件 @
50046692
###########################################################################
#
# Copyright (c) 2009, 201
1
, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2009, 201
2
, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
...
...
@@ -125,15 +125,15 @@
# 7123972
java/lang/annotation/loaderLeak/Main.java generic-all
# 7079093
java/lang/instrument/ManifestTest.sh windows-all
# 6944188
java/lang/management/ThreadMXBean/ThreadStateTest.java generic-all
# 7067973
java/lang/management/MemoryMXBean/CollectionUsageThreshold.java generic-all
# 7148492
java/lang/management/MemoryMXBean/ResetPeakMemoryUsage.java generic-all
############################################################################
# jdk_management
...
...
@@ -144,9 +144,8 @@ javax/management/loading/LibraryLoader/LibraryLoaderTest.java windows-all
# 7144846
javax/management/remote/mandatory/connection/ReconnectTest.java generic-all
# 7073626
sun/management/jmxremote/bootstrap/RmiBootstrapTest.sh windows-all
sun/management/jmxremote/bootstrap/RmiSslBootstrapTest.sh windows-all
# 7149181
sun/management/jmxremote/startstop/JMXStartStopTest.sh generic-all
############################################################################
...
...
@@ -185,6 +184,10 @@ java/net/InetAddress/CheckJNI.java linux-all
# 7102702
java/net/PortUnreachableException/OneExceptionOnly.java windows-all
# 7148829
sun/net/InetAddress/nameservice/simple/CacheTest.java generic-all
sun/net/InetAddress/nameservice/simple/DefaultCaching.java generic-all
############################################################################
# jdk_io
...
...
@@ -215,6 +218,9 @@ java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java generic-all
# 6948101
java/rmi/transport/pinLastArguments/PinLastArguments.java generic-all
# 7146541
java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java linux-all
# 7132247
java/rmi/registry/readTest/readTest.sh windows-all
...
...
@@ -339,4 +345,3 @@ java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java generic-all
java/util/TimeZone/TimeZoneDatePermissionCheck.sh solaris-all
############################################################################
test/java/lang/instrument/ManifestTest.sh
浏览文件 @
50046692
#
# Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2008,
2012,
Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
...
...
@@ -396,7 +396,7 @@ while read token; do
touch
$FAIL_MARKER
fi
MESG
=
`
cat
expect_boot_cp_line
`
MESG
=
`
cat
expect_boot_cp_line
|
tr
-d
'\n\r'
`
grep
-s
"
$MESG
"
output.log
>
/dev/null
result
=
$?
if
[
"
$result
"
=
0
]
;
then
...
...
@@ -406,7 +406,7 @@ while read token; do
touch
$FAIL_MARKER
fi
MESG
=
`
cat
expect_redef_line
`
MESG
=
`
cat
expect_redef_line
|
tr
-d
'\n\r'
`
grep
-s
"
$MESG
"
output.log
>
/dev/null
result
=
$?
if
[
"
$result
"
=
0
]
;
then
...
...
@@ -416,7 +416,7 @@ while read token; do
touch
$FAIL_MARKER
fi
MESG
=
`
cat
expect_retrans_line
`
MESG
=
`
cat
expect_retrans_line
|
tr
-d
'\n\r'
`
grep
-s
"
$MESG
"
output.log
>
/dev/null
result
=
$?
if
[
"
$result
"
=
0
]
;
then
...
...
@@ -426,7 +426,7 @@ while read token; do
touch
$FAIL_MARKER
fi
MESG
=
`
cat
expect_set_nmp_line
`
MESG
=
`
cat
expect_set_nmp_line
|
tr
-d
'\n\r'
`
grep
-s
"
$MESG
"
output.log
>
/dev/null
result
=
$?
if
[
"
$result
"
=
0
]
;
then
...
...
test/java/util/Collections/EqualsTest.java
0 → 100644
浏览文件 @
50046692
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 7144488
* @summary Infinite recursion for some equals tests in Collections
*/
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
public
class
EqualsTest
{
public
static
void
main
(
String
[]
args
)
{
boolean
test
;
/* synchronizedList test */
List
list
=
Collections
.
synchronizedList
(
new
ArrayList
());
list
.
add
(
list
);
test
=
list
.
equals
(
list
);
assertTrue
(
test
);
list
.
remove
(
list
);
/* synchronizedSet test */
Set
s
=
Collections
.
synchronizedSet
(
new
HashSet
());
s
.
add
(
s
);
test
=
s
.
equals
(
s
);
assertTrue
(
test
);
/* synchronizedMap test */
Map
m
=
Collections
.
synchronizedMap
(
new
HashMap
());
test
=
m
.
equals
(
m
);
assertTrue
(
test
);
}
private
static
void
assertTrue
(
boolean
b
)
{
if
(!
b
)
throw
new
RuntimeException
(
"assertion failed"
);
}
}
test/sun/management/AgentCheckTest.java
浏览文件 @
50046692
/*
* Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004,
2012,
Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -35,10 +35,10 @@ public class AgentCheckTest {
public
static
void
main
(
String
[]
args
){
String
[][]
testStrings
=
{
{
"agent.err.error"
,
""
,
""
},
{
"jmxremote.ConnectorBootstrap.
initialize
"
,
""
,
""
},
{
"jmxremote.ConnectorBootstrap.
initialize.
noAuthentication"
,
""
,
""
},
{
"jmxremote.ConnectorBootstrap.
initialize.
ready"
,
"Phony JMXServiceURL"
,
""
},
{
"jmxremote.ConnectorBootstrap.
initialize.
password.readonly"
,
"Phony passwordFileName"
,
""
},
{
"jmxremote.ConnectorBootstrap.
starting
"
,
""
,
""
},
{
"jmxremote.ConnectorBootstrap.noAuthentication"
,
""
,
""
},
{
"jmxremote.ConnectorBootstrap.ready"
,
"Phony JMXServiceURL"
,
""
},
{
"jmxremote.ConnectorBootstrap.password.readonly"
,
"Phony passwordFileName"
,
""
},
{
"jmxremote.AdaptorBootstrap.getTargetList.processing"
,
""
,
""
},
{
"jmxremote.AdaptorBootstrap.getTargetList.adding"
,
"Phony target"
,
""
},
{
"jmxremote.AdaptorBootstrap.getTargetList.starting"
,
""
,
""
},
...
...
test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh
浏览文件 @
50046692
#
# Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2003, 201
2
, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
...
...
@@ -34,6 +34,13 @@
OS
=
`
uname
-s
`
UMASK
=
`
umask
`
if
[[
$OS
==
CYGWIN_NT
*
]]
;
then
OS
=
"Windows_NT"
if
[
-z
"
$SystemRoot
"
]
;
then
SystemRoot
=
$SYSTEMROOT
fi
fi
case
$OS
in
SunOS
|
Linux
)
PATHSEP
=
":"
...
...
test/sun/management/jmxremote/startstop/JMXStartStopDoSomething.java
0 → 100644
浏览文件 @
50046692
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.io.RandomAccessFile
;
public
class
JMXStartStopDoSomething
{
public
void
doSomething
(){
try
{
for
(
int
i
=
0
;
i
<
10
;
++
i
)
{
RandomAccessFile
f
=
new
RandomAccessFile
(
"/dev/null"
,
"r"
);
int
n
=
f
.
read
();
f
.
close
();
}
}
catch
(
Throwable
e
)
{
System
.
err
.
println
(
"Something bad happens:"
+
e
);
}
}
public
static
void
main
(
String
args
[])
throws
Exception
{
System
.
err
.
println
(
"main enter"
);
int
count
=
1
;
while
(
count
>
0
)
{
JMXStartStopDoSomething
p
=
new
JMXStartStopDoSomething
();
p
.
doSomething
();
Thread
.
sleep
(
1
);
}
// System.err.println("main exit");
}
}
test/sun/management/jmxremote/startstop/JMXStartStopTest.java
0 → 100644
浏览文件 @
50046692
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FilenameFilter
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.rmi.registry.LocateRegistry
;
import
java.rmi.registry.Registry
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Enumeration
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.Map
;
import
java.util.Properties
;
import
java.util.Set
;
import
javax.management.*
;
import
javax.management.remote.*
;
import
sun.management.AgentConfigurationError
;
import
sun.management.jmxremote.ConnectorBootstrap
;
public
class
JMXStartStopTest
{
static
boolean
verbose
=
false
;
static
void
dbg_print
(
String
msg
){
if
(
verbose
)
{
System
.
err
.
println
(
"DBG: "
+
msg
);
}
}
static
void
dbg_print
(
String
msg
,
Throwable
ex
){
if
(
verbose
)
{
System
.
err
.
println
(
"DBG: "
+
msg
+
" "
+
ex
.
getMessage
()
);
ex
.
printStackTrace
(
System
.
err
);
}
}
public
static
int
listMBeans
(
MBeanServerConnection
server
,
ObjectName
pattern
,
QueryExp
query
)
throws
Exception
{
Set
names
=
server
.
queryNames
(
pattern
,
query
);
for
(
Iterator
i
=
names
.
iterator
();
i
.
hasNext
();
)
{
ObjectName
name
=
(
ObjectName
)
i
.
next
();
MBeanInfo
info
=
server
.
getMBeanInfo
(
name
);
dbg_print
(
"Got MBean: "
+
name
);
MBeanAttributeInfo
[]
attrs
=
info
.
getAttributes
();
if
(
attrs
==
null
)
continue
;
for
(
int
j
=
0
;
j
<
attrs
.
length
;
j
++)
{
if
(
attrs
[
j
].
isReadable
())
{
Object
o
=
server
.
getAttribute
(
name
,
attrs
[
j
].
getName
());
}
}
}
return
names
.
size
();
}
public
void
run_local
(
String
strPid
)
throws
Exception
{
String
jmxUrlStr
=
null
;
int
pid
=
Integer
.
parseInt
(
strPid
);
try
{
jmxUrlStr
=
sun
.
management
.
ConnectorAddressLink
.
importFrom
(
pid
);
dbg_print
(
"Local Service URL: "
+
jmxUrlStr
);
if
(
jmxUrlStr
==
null
)
{
throw
new
Exception
(
"No Service URL. Local agent not started?"
);
}
JMXServiceURL
url
=
new
JMXServiceURL
(
jmxUrlStr
);
Map
m
=
new
HashMap
();
JMXConnector
c
=
JMXConnectorFactory
.
connect
(
url
,
m
);
MBeanServerConnection
conn
=
c
.
getMBeanServerConnection
();
ObjectName
pattern
=
new
ObjectName
(
"java.lang:type=Memory,*"
);
int
count
=
listMBeans
(
conn
,
pattern
,
null
);
if
(
count
==
0
)
throw
new
Exception
(
"Expected at least one matching "
+
"MBean for "
+
pattern
);
}
catch
(
IOException
e
)
{
dbg_print
(
"Cannot find process : "
+
pid
);
throw
e
;
}
}
public
void
run
(
String
args
[])
throws
Exception
{
dbg_print
(
"RmiRegistry lookup..."
);
int
port
=
4567
;
if
(
args
!=
null
&&
args
.
length
>
0
)
{
port
=
Integer
.
parseInt
(
args
[
0
]);
}
dbg_print
(
"Using port: "
+
port
);
int
rmiPort
=
0
;
if
(
args
!=
null
&&
args
.
length
>
1
)
{
rmiPort
=
Integer
.
parseInt
(
args
[
1
]);
}
dbg_print
(
"Using rmi port: "
+
rmiPort
);
Registry
registry
=
LocateRegistry
.
getRegistry
(
port
);
// "jmxrmi"
String
[]
relist
=
registry
.
list
();
for
(
int
i
=
0
;
i
<
relist
.
length
;
++
i
)
{
dbg_print
(
"Got registry: "
+
relist
[
i
]);
}
String
jmxUrlStr
=
(
rmiPort
!=
0
)
?
String
.
format
(
"service:jmx:rmi://localhost:%d/jndi/rmi://localhost:%d/jmxrmi"
,
rmiPort
,
port
)
:
String
.
format
(
"service:jmx:rmi:///jndi/rmi://localhost:%d/jmxrmi"
,
port
);
JMXServiceURL
url
=
new
JMXServiceURL
(
jmxUrlStr
);
Map
m
=
new
HashMap
();
JMXConnector
c
=
JMXConnectorFactory
.
connect
(
url
,
m
);
MBeanServerConnection
conn
=
c
.
getMBeanServerConnection
();
ObjectName
pattern
=
new
ObjectName
(
"java.lang:type=Memory,*"
);
int
count
=
listMBeans
(
conn
,
pattern
,
null
);
if
(
count
==
0
)
throw
new
Exception
(
"Expected at least one matching "
+
"MBean for "
+
pattern
);
}
public
static
void
main
(
String
args
[])
{
JMXStartStopTest
manager
=
new
JMXStartStopTest
();
try
{
if
(
args
!=
null
&&
args
[
0
].
equals
(
"local"
))
{
manager
.
run_local
(
args
[
1
]);
}
else
{
manager
.
run
(
args
);
}
}
catch
(
RuntimeException
r
)
{
dbg_print
(
"No connection: "
,
r
);
System
.
out
.
println
(
"NO_CONN"
);
System
.
exit
(
1
);
}
catch
(
Throwable
t
)
{
dbg_print
(
"No connection: "
,
t
);
System
.
out
.
println
(
"NO_CONN"
);
System
.
exit
(
2
);
}
System
.
out
.
println
(
"OK_CONN"
);
System
.
exit
(
0
);
}
}
test/sun/management/jmxremote/startstop/JMXStartStopTest.sh
0 → 100644
浏览文件 @
50046692
#!/bin/sh
# Copyright (c) 2011, 2012 Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
# @test
# @bug 7110104
# @build JMXStartStopTest JMXStartStopDoSomething
# @run shell JMXStartStopTest.sh --jtreg --no-compile
# @summary No word Failed expected in the test output
_verbose
=
no
_server
=
no
_jtreg
=
no
_compile
=
yes
_testsuite
=
"01,02,03,04,05,06,07,08,09,10,11,12,13"
_port_one
=
50234
_port_two
=
50235
_testclasses
=
".classes"
_testsrc
=
`
pwd
`
_logname
=
".classes/JMXStartStopTest_output.txt"
_compile
(){
if
[
!
-e
${
_testclasses
}
]
then
mkdir
-p
${
_testclasses
}
fi
rm
-f
${
_testclasses
}
/JMXStartStopTest.class
# Compile testcase
${
TESTJAVA
}
/bin/javac
-d
${
_testclasses
}
JMXStartStopDoSomething.java JMXStartStopTest.java
if
[
!
-e
${
_testclasses
}
/JMXStartStopTest.class
]
then
echo
"ERROR: Can't compile"
exit
-1
fi
}
_app_start
(){
if
[
"
${
_verbose
}
"
=
"yes"
]
then
echo
"RUN:
${
TESTJAVA
}
/bin/java -server
$*
-cp
${
_testclasses
}
JMXStartStopDoSomething "
fi
${
TESTJAVA
}
/bin/java
-server
$*
-cp
${
_testclasses
}
JMXStartStopDoSomething
>>
${
_logname
}
2>&1 &
sleep
1
pid
=
`
_get_pid
`
if
[
"x
${
pid
}
"
=
"x"
]
then
echo
"ERROR: Test app not started"
exit
-1
fi
}
_get_pid
(){
${
TESTJAVA
}
/bin/jps |
sed
-n
"/JMXStartStopDoSomething/s/ .*//p"
}
_app_stop
(){
pid
=
`
_get_pid
`
if
[
"x
${
pid
}
"
!=
"x"
]
then
kill
$pid
fi
# Stop on first failed test under jtreg
if
[
"x
$1
"
=
"xFailed"
-a
"
${
_jtreg
}
"
=
"yes"
]
then
exit
-1
fi
}
testme
(){
${
TESTJAVA
}
/bin/java
-cp
${
_testclasses
}
JMXStartStopTest
$*
}
_jcmd
(){
if
[
"
${
_verbose
}
"
=
"yes"
]
then
echo
"RUN:
${
TESTJAVA
}
/bin/jcmd JMXStartStopDoSomething
$*
"
${
TESTJAVA
}
/bin/jcmd JMXStartStopDoSomething
$*
else
${
TESTJAVA
}
/bin/jcmd JMXStartStopDoSomething
$*
>
/dev/null 2>/dev/null
fi
}
_echo
(){
echo
"
$*
"
echo
"
$*
"
>>
${
_logname
}
}
# ============= TESTS ======================================
test_01
(){
# Run an app with JMX enabled stop it and
# restart on other port
_echo
"**** Test one ****"
_app_start
-Dcom
.sun.management.jmxremote.port
=
$1
\
-Dcom
.sun.management.jmxremote.authenticate
=
false
\
-Dcom
.sun.management.jmxremote.ssl
=
false
res1
=
`
testme
$1
`
_jcmd ManagementAgent.stop
res2
=
`
testme
$1
`
_jcmd ManagementAgent.start jmxremote.port
=
$2
res3
=
`
testme
$2
`
if
[
"
${
res1
}
"
=
"OK_CONN"
-a
"
${
res2
}
"
=
"NO_CONN"
-a
"
${
res3
}
"
=
"OK_CONN"
]
then
_echo
"Passed"
else
_echo
"Failed r1(OK):
${
res1
}
r2(NO):
${
res2
}
r3(OK):
${
res3
}
"
_app_stop
"Failed"
fi
_app_stop
}
test_02
(){
# Run an app without JMX enabled
# start JMX by jcmd
_echo
"**** Test two ****"
_app_start
_jcmd ManagementAgent.start jmxremote.port
=
$1
jmxremote.authenticate
=
false
jmxremote.ssl
=
false
res1
=
`
testme
$1
`
if
[
"
${
res1
}
"
=
"OK_CONN"
]
then
_echo
"Passed"
else
_echo
"Failed r1(OK):
${
res1
}
"
_app_stop
"Failed"
fi
_app_stop
}
test_03
(){
# Run an app without JMX enabled
# start JMX by jcmd on one port than on other one
_echo
"**** Test three ****"
_app_start
_jcmd ManagementAgent.start jmxremote.port
=
$1
jmxremote.authenticate
=
false
jmxremote.ssl
=
false
# Second agent shouldn't start
_jcmd ManagementAgent.start jmxremote.port
=
$2
jmxremote.authenticate
=
false
jmxremote.ssl
=
false
# First agent should connect
res1
=
`
testme
$1
`
if
[
"
${
res1
}
"
=
"OK_CONN"
]
then
_echo
"Passed
$1
"
else
_echo
"Failed r1(NO):
${
res1
}
"
_app_stop
"Failed"
fi
#Second agent shouldn't connect
res1
=
`
testme
$2
`
if
[
"
${
res1
}
"
=
"NO_CONN"
]
then
_echo
"Passed
$2
"
else
_echo
"Failed r1(OK):
${
res1
}
"
fi
_app_stop
}
test_04
(){
# Run an app without JMX enabled
# start JMX by jcmd on one port, specify rmi port explicitly
_echo
"**** Test four ****"
_app_start
_jcmd ManagementAgent.start jmxremote.port
=
$1
jmxremote.rmi.port
=
$2
jmxremote.authenticate
=
false
jmxremote.ssl
=
false
# First agent should connect
res1
=
`
testme
$1
$2
`
if
[
"
${
res1
}
"
=
"OK_CONN"
]
then
_echo
"Passed
$1
$2
"
else
_echo
"Failed r1(NO):
${
res1
}
"
_app_stop
"Failed"
fi
_app_stop
}
test_05
(){
# Run an app without JMX enabled, it will enable local server
# but should leave remote server disabled
_echo
"**** Test five ****"
_app_start
_jcmd ManagementAgent.start
jmxremote
=
1
# First agent should connect
res1
=
`
testme
$1
`
if
[
"
${
res1
}
"
=
"NO_CONN"
]
then
_echo
"Passed
$1
$2
"
else
_echo
"Failed r1(OK):
${
res1
}
"
_app_stop
"Failed"
fi
_app_stop
}
test_06
(){
# Run an app without JMX enabled
# start JMX by jcmd on one port, specify rmi port explicitly
# attempt to start it again
# 1) with the same port
# 2) with other port
# 3) attempt to stop it twice
# Check for valid messages in the output
_echo
"**** Test six ****"
_app_start
_jcmd ManagementAgent.start jmxremote.port
=
$1
jmxremote.authenticate
=
false
jmxremote.ssl
=
false
# First agent should connect
res1
=
`
testme
$1
$2
`
if
[
"
${
res1
}
"
=
"OK_CONN"
]
then
_echo
"Passed
$1
$2
"
else
_echo
"Failed r1(NO):
${
res1
}
"
_app_stop
"Failed"
fi
_jcmd ManagementAgent.start jmxremote.port
=
$1
jmxremote.authenticate
=
false
jmxremote.ssl
=
false
_jcmd ManagementAgent.start jmxremote.port
=
$2
jmxremote.authenticate
=
false
jmxremote.ssl
=
false
_jcmd ManagementAgent.stop
_jcmd ManagementAgent.stop
_jcmd ManagementAgent.start jmxremote.port
=
22 jmxremote.rmi.port
=
$2
jmxremote.authenticate
=
false
jmxremote.ssl
=
false
_app_stop
}
test_07
(){
# Run an app without JMX enabled, but with some properties set
# in command line.
# make sure these properties overriden corectly
_echo
"**** Test seven ****"
_app_start
-Dcom
.sun.management.jmxremote.authenticate
=
false
\
-Dcom
.sun.management.jmxremote.ssl
=
true
res1
=
`
testme
$1
`
_jcmd ManagementAgent.start jmxremote.port
=
$2
jmxremote.authenticate
=
false
jmxremote.ssl
=
false
res2
=
`
testme
$2
`
if
[
"
${
res1
}
"
=
"NO_CONN"
-a
"
${
res2
}
"
=
"OK_CONN"
]
then
echo
"Passed"
else
_echo
"Failed r1(NO):
${
res1
}
r2(OK):
${
res2
}
"
_app_stop
"Failed"
fi
_app_stop
}
test_08
(){
# Run an app with JMX enabled and with some properties set
# in command line.
# stop JMX agent and then start it again with different property values
# make sure these properties overriden corectly
_echo
"**** Test eight ****"
_app_start
-Dcom
.sun.management.jmxremote.port
=
$1
\
-Dcom
.sun.management.jmxremote.authenticate
=
false
\
-Dcom
.sun.management.jmxremote.ssl
=
true
res1
=
`
testme
$1
`
_jcmd ManagementAgent.stop
res2
=
`
testme
$1
`
_jcmd ManagementAgent.start jmxremote.port
=
$2
jmxremote.authenticate
=
false
jmxremote.ssl
=
false
res3
=
`
testme
$2
`
if
[
"
${
res1
}
"
=
"NO_CONN"
-a
"
${
res2
}
"
=
"NO_CONN"
-a
"
${
res3
}
"
=
"OK_CONN"
]
then
_echo
"Passed"
else
_echo
"Failed r1(NO):
${
res1
}
r2(NO):
${
res2
}
r3(OK):
${
res3
}
"
_app_stop
"Failed"
fi
_app_stop
}
test_09
(){
# Run an app with JMX enabled and with some properties set
# in command line.
# stop JMX agent and then start it again with different property values
# specifing some property in management config file and some of them
# in command line
# make sure these properties overriden corectly
_echo
"**** Test nine ****"
_app_start
-Dcom
.sun.management.config.file
=
${
_testsrc
}
/management_cl.properties
\
-Dcom
.sun.management.jmxremote.authenticate
=
false
res1
=
`
testme
$1
`
_jcmd ManagementAgent.stop
res2
=
`
testme
$1
`
_jcmd ManagementAgent.start config.file
=
${
_testsrc
}
/management_jcmd.properties
\
jmxremote.authenticate
=
false
jmxremote.port
=
$2
res3
=
`
testme
$2
`
if
[
"
${
res1
}
"
=
"NO_CONN"
-a
"
${
res2
}
"
=
"NO_CONN"
-a
"
${
res3
}
"
=
"OK_CONN"
]
then
_echo
"Passed"
else
_echo
"Failed r1(NO):
${
res1
}
r2(NO):
${
res2
}
r3(OK):
${
res3
}
"
_app_stop
"Failed"
fi
_app_stop
}
test_10
(){
# Run an app with JMX enabled and with some properties set
# in command line.
# stop JMX agent and then start it again with different property values
# stop JMX agent again and then start it without property value
# make sure these properties overriden corectly
_echo
"**** Test ten ****"
_app_start
-Dcom
.sun.management.jmxremote.port
=
$1
\
-Dcom
.sun.management.jmxremote.authenticate
=
false
\
-Dcom
.sun.management.jmxremote.ssl
=
true
res1
=
`
testme
$1
`
_jcmd ManagementAgent.stop
_jcmd ManagementAgent.start jmxremote.ssl
=
false
jmxremote.port
=
$1
res2
=
`
testme
$1
`
_jcmd ManagementAgent.stop
_jcmd ManagementAgent.start jmxremote.port
=
$1
res3
=
`
testme
$1
`
if
[
"
${
res1
}
"
=
"NO_CONN"
-a
"
${
res2
}
"
=
"OK_CONN"
-a
"
${
res3
}
"
=
"NO_CONN"
]
then
_echo
"Passed"
else
_echo
"Failed r1(NO):
${
res1
}
r2(OK):
${
res2
}
r3(NO):
${
res3
}
"
_app_stop
"Failed"
fi
_app_stop
}
test_11
(){
# Run an app with JMX enabled
# stop remote agent
# make sure local agent is not affected
_echo
"**** Test eleven ****"
_app_start
-Dcom
.sun.management.jmxremote.port
=
$2
\
-Dcom
.sun.management.jmxremote.authenticate
=
false
\
-Dcom
.sun.management.jmxremote.ssl
=
false
res1
=
`
testme
$2
`
_jcmd ManagementAgent.stop
pid
=
`
${
TESTJAVA
}
/bin/jps |
sed
-n
"/JMXStartStopDoSomething/s/ .*//p"
`
res2
=
`
testme
local
${
pid
}
`
if
[
"
${
res1
}
"
=
"OK_CONN"
-a
"
${
res2
}
"
=
"OK_CONN"
]
then
_echo
"Passed"
else
_echo
"Failed r1(OK):
${
res1
}
r2(OK):
${
res2
}
"
_app_stop
"Failed"
fi
_app_stop
}
test_12
(){
# Run an app with JMX disabled
# start local agent only
_echo
"**** Test twelve ****"
_app_start
res1
=
`
testme
$1
`
_jcmd ManagementAgent.start_local
pid
=
`
_get_pid
`
if
[
"x
${
pid
}
"
=
"x"
]
then
res2
=
"NO_CONN"
else
res2
=
`
testme
local
${
pid
}
`
fi
if
[
"
${
res1
}
"
=
"NO_CONN"
-a
"
${
res2
}
"
=
"OK_CONN"
]
then
_echo
"Passed"
else
_echo
"Failed r1(NO):
${
res1
}
r2(OK):
${
res2
}
"
_app_stop
"Failed"
fi
_app_stop
}
test_13
(){
# Run an app with -javaagent make sure it works as expected - system properties are ignored
_echo
"**** Test 13 ****"
AGENT
=
"
${
TESTJAVA
}
/jre/lib/management-agent.jar"
if
[
!
-f
${
AGENT
}
]
then
AGENT
=
"
${
TESTJAVA
}
/lib/management-agent.jar"
fi
_app_start
-javaagent
:
${
AGENT
}
=
com.sun.management.jmxremote.port
=
$1
,com.sun.management.jmxremote.authenticate
=
false
-Dcom
.sun.management.jmxremote.ssl
=
false
res1
=
`
testme
$1
`
if
[
"
${
res1
}
"
=
"NO_CONN"
]
then
_echo
"Passed"
else
_echo
"Failed r1(NO):
${
res1
}
"
_app_stop
"Failed"
fi
_app_stop
}
#============== Server tests =======================
server_test_01
(){
_echo
"**** Server test one ****"
_app_start
-Dcom
.sun.management.jmxremote.port
=
$1
\
-Dcom
.sun.management.jmxremote.rmi.port
=
$2
\
-Dcom
.sun.management.jmxremote.authenticate
=
false
\
-Dcom
.sun.management.jmxremote.ssl
=
false
}
# ============= MAIN =======================================
if
[
"x
${
TESTJAVA
}
"
=
"x"
]
then
echo
"TESTJAVA env have to be set"
exit
fi
if
[
!
-x
"
${
TESTJAVA
}
/bin/jcmd"
]
then
echo
"
${
TESTJAVA
}
/bin/jcmd"
echo
"Doesn't exist or not an executable"
if
[
"
${
_verbose
}
"
!=
"yes"
]
then
exit
fi
fi
#------------------------------------------------------------------------------
# reading parameters
for
parm
in
"
$@
"
do
case
$parm
in
--verbose
)
_verbose
=
yes
;;
--server
)
_server
=
yes
;;
--jtreg
)
_jtreg
=
yes
;;
--no-compile
)
_compile
=
no
;;
--testsuite
=
*
)
_testsuite
=
`
_echo
$parm
|
sed
"s,^--.*=
\(
.*
\)
,
\1
,"
`
;;
--port-one
=
*
)
_port_one
=
`
_echo
$parm
|
sed
"s,^--.*=
\(
.*
\)
,
\1
,"
`
;;
--port-two
=
*
)
_port_two
=
`
_echo
$parm
|
sed
"s,^--.*=
\(
.*
\)
,
\1
,"
`
;;
*
)
echo
"Undefined parameter
$parm
. Try --help for help"
exit
;;
esac
done
if
[
${
_compile
}
=
"yes"
]
then
_compile
fi
if
[
${
_jtreg
}
=
"yes"
]
then
_testclasses
=
${
TESTCLASSES
}
_testsrc
=
${
TESTSRC
}
_logname
=
"JMXStartStopTest_output.txt"
fi
rm
-f
${
_logname
}
# Start server mode tests
# All of them require manual cleanup
if
[
"x
${
_server
}
"
=
"xyes"
]
then
server_test_01
${
_port_one
}
${
_port_two
}
else
# Local mode tests
for
i
in
`
echo
${
_testsuite
}
|
sed
-e
"s/,/ /g"
`
do
test_
${
i
}
${
_port_one
}
${
_port_two
}
done
fi
test/sun/management/jmxremote/startstop/REMOTE_TESTING.txt
0 → 100644
浏览文件 @
50046692
1. Setup two hosts
2. Make sure tcp connection between them works
3. run tcpdump -i <interface> host <host2_name> and 'tcp[13] & 2!=0'
on host 1
4. run JMXStartStopTest.sh --server on host2
5. run jconsole on host1
6. connect jconsole to host2:50234
Make sure jconsole works
Make sure only host2.50234 and host2.50235 appears in tcpdump output.
test/sun/management/jmxremote/startstop/management_cl.properties
0 → 100644
浏览文件 @
50046692
com.sun.management.jmxremote.ssl
=
true
com.sun.management.internal.read_from_config_file_cl
=
true
test/sun/management/jmxremote/startstop/management_jcmd.properties
0 → 100644
浏览文件 @
50046692
com.sun.management.jmxremote.ssl
=
false
jmxremote.authenticate
=
true
com.sun.management.internal.read_from_config_file_jcmd
=
true
test/sun/security/provider/PolicyFile/NullCodeSource.java
0 → 100644
浏览文件 @
50046692
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 7147830
* @summary PolicyFile.getPermissions(CodeSource) should return
* empty permissions when passed in null code source
*/
import
java.security.CodeSource
;
import
java.security.PermissionCollection
;
import
java.security.Policy
;
public
class
NullCodeSource
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
Policy
policy
=
Policy
.
getPolicy
();
PermissionCollection
perms
=
policy
.
getPermissions
((
CodeSource
)
null
);
if
(
perms
.
elements
().
hasMoreElements
())
{
System
.
err
.
println
(
perms
);
throw
new
Exception
(
"PermissionCollection is not empty"
);
}
}
}
test/tools/launcher/Settings.java
浏览文件 @
50046692
...
...
@@ -75,14 +75,14 @@ public class Settings extends TestHelper {
static
void
runTestOptionDefault
()
throws
IOException
{
TestResult
tr
=
null
;
tr
=
doExec
(
javaCmd
,
"-Xms64m"
,
"-Xmx512m"
,
"-Xss
128
k"
,
"-XshowSettings"
,
"-jar"
,
testJar
.
getAbsolutePath
());
"-Xss
256
k"
,
"-XshowSettings"
,
"-jar"
,
testJar
.
getAbsolutePath
());
containsAllOptions
(
tr
);
if
(!
tr
.
isOK
())
{
System
.
out
.
println
(
tr
.
status
);
throw
new
RuntimeException
(
"test fails"
);
}
tr
=
doExec
(
javaCmd
,
"-Xms65536k"
,
"-Xmx712m"
,
"-Xss
12288
0"
,
"-XshowSettings"
,
"-jar"
,
testJar
.
getAbsolutePath
());
"-Xss
25600
0"
,
"-XshowSettings"
,
"-jar"
,
testJar
.
getAbsolutePath
());
containsAllOptions
(
tr
);
if
(!
tr
.
isOK
())
{
System
.
out
.
println
(
tr
.
status
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录