for 루프에 할당 된 배열 변수의 모든 값을 반환하는 방법을 알고 싶습니다.액세스 배열 값 Java의 측면 범위
아래의 방법에서 출력 배열에 값을 할당합니다. 이제 출력 배열의 모든 값을 반환 인수로 표시하려고합니다. 범위 수준 때문에 마지막 값을 얻고 있습니다.
지금은 범위 문제로 인해 마지막 값 하나를 반환 할 수 있습니다.
public static String[] getMBeanAppsStatus(String host, String port,
String container, String filter,
String usr, String pwd) {
String Output[] = new String[3];
int mbeanAppsIdx = 0;
int LVar = mbeanAppsIdx;
try {
Object[] connections =
connectMethd(host, port, container, filter, usr, pwd);
MBeanServerConnection serverConn =
(MBeanServerConnection)connections[0];
System.out.println("serverConn from array variable in getMBeanAppsStatus" +
serverConn);
/* retrieve mbean apps matching given filter */
ObjectName mbeanDomainName = new ObjectName(filter);
Set mbeanAppNames = serverConn.queryNames(mbeanDomainName, null);
/* pattern to extract mbean application names */
Pattern mbeanAppPat =
Pattern.compile("name=", Pattern.CASE_INSENSITIVE);
/* mbean application name */
ObjectName mbeanApp = null;
/* retrieve mbean apps count */
Iterator i;
for (i = mbeanAppNames.iterator(); i.hasNext();) {
mbeanAppsIdx++;
System.out.println("Populating MBean App #" + mbeanAppsIdx +
"details...");
/* retrieve mbean app name and status */
mbeanApp = (ObjectName)i.next();
String mbeanAppFQDN = mbeanApp.toString();
String mbeanAppName = mbeanAppPat.split(mbeanAppFQDN)[1];
Boolean mbeanAppRunning =
Boolean.valueOf(serverConn.getAttribute(mbeanApp,
"Running").toString());
String mbeanAppStatus = "DISABLED";
if (mbeanAppRunning.booleanValue())
mbeanAppStatus = "ENABLED";
Output[0] = mbeanAppName;
Output[1] = mbeanAppFQDN;
Output[2] = mbeanAppStatus;
System.out.println("getMBeanAppsStatus output " +
"mbeanAppName " + mbeanAppName +
" mbeanAppFQDN " + mbeanAppFQDN +
" mbeanAppStatus : " + mbeanAppStatus);
}
} catch (MalformedObjectNameException e) {
e.getStackTrace();
} catch (InstanceNotFoundException e) {
e.getStackTrace();
} catch (AttributeNotFoundException e) {
e.getStackTrace();
} catch (ReflectionException e) {
e.getStackTrace();
} catch (MBeanException e) {
e.getStackTrace();
} catch (IOException ioe) {
System.out.println(ioe);
}
System.out.println("getMBeanAppsStatus Output " + Output);
return Output;
}
기본적으로,이 방법의 출력의 반환 값이 될 것 J2EE의 웹 서비스와 웹 서비스의 응답에 위의 방법을 변환하려합니다.
나는이 문제를 해결하고자하는 방법에 2 가지 이슈가 있습니다.
1) 콤마 ,
세퍼레이터 mbeanAppName
, mbeanAppFQDN
및 mbeanAppStatus
의 값을 연결하고 배열 변수에 할당 할.
2) 이전 값을 모두 보유해야하는 배열 결과를 반환합니다.
샘플 출력을 표시 할 수 있습니까? –
응답 주셔서 감사합니다 ... 샘플 출력 MBean을 채 웁니다 App # 63details ... getMBeanAppsStatus 출력 mbeanAppName Aramex_TEST_SOStatusMBean mbeanAppFQDN 기본값 : type = Application, name = Aramex_TEST_SOStatusMBean mbeanAppStatus : DISABLED 출력에서 마지막 Mbean은 63 번째입니다. 모든 이전 값은 다음 출력으로 덮어 씁니다. – Tarak
각 반복에서 이전 출력을 현재 출력으로 겹쳐 쓰므로 63 번째 출력 만 볼 수 있습니다. 63 개의 모든 출력을 String 배열 출력에 저장하려고합니까? –