? .nbintdb Index: apichanges.xml =================================================================== RCS file: /cvs/j2eeserver/apichanges.xml,v retrieving revision 1.8 diff -u -b -r1.8 apichanges.xml --- apichanges.xml 19 Jan 2005 21:59:08 -0000 1.8 +++ apichanges.xml 20 Jan 2005 19:45:42 -0000 @@ -80,6 +80,24 @@ + + + StartServer.needsRestart tells j2eeserver a state of the server + + + + + +

+ This optional method allow plugin to communicate with + j2eeserver about the need to restart the server before + deployment so that last changes to server configuration + would take effect. +

+
+ + +
Index: src/org/netbeans/modules/j2ee/deployment/impl/ServerInstance.java =================================================================== RCS file: /cvs/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/ServerInstance.java,v retrieving revision 1.40 diff -u -b -r1.40 ServerInstance.java --- src/org/netbeans/modules/j2ee/deployment/impl/ServerInstance.java 12 Jan 2005 19:26:01 -0000 1.40 +++ src/org/netbeans/modules/j2ee/deployment/impl/ServerInstance.java 20 Jan 2005 19:45:42 -0000 @@ -422,11 +422,18 @@ } boolean canControlAdmin = ss.supportsStartDeploymentManager(); + boolean needsRestart = ss.needsRestart(target); if (ss.isAlsoTargetServer(target)) { if (debugMode) { if (ss.isDebuggable(target)) { // implies ss.isRunning() true + if (! needsRestart) { return true; + } + if (! canControlAdmin || ! _stop(ui)) { + return errorCannotControlAdmin(ui); + } + } else if (isReallyRunning()) { // running but not debuggable if (canControlAdmin) { if (! _stop(ui)) @@ -442,15 +449,21 @@ } } else { if (isReallyRunning()) { + if (! needsRestart) { return true; - } else if (canControlAdmin) { + } + if (! canControlAdmin || ! _stop(ui)) { + return errorCannotControlAdmin(ui); + } + } + if (canControlAdmin) { return _start(ui); } else { return errorCannotControlAdmin(ui); } } } else { // not also target server - // using JSR-77 Management so need to make sure admin is running + // this block ensure a running admin server to control other targets if (! isReallyRunning()) { if (canControlAdmin) { if (! _start(ui)) { @@ -462,13 +475,27 @@ } if (debugMode) { if (ss.isDebuggable(target)) { + if ( ! needsRestart) { return true; } if (! _stop(target, ui)) { return false; } + } else if (ss.isRunning(target)) { + if (! _stop(target, ui)) { + return false; + } + } return _startDebug(target, ui); } else { + if (ss.isRunning(target)) { + if (! needsRestart) { + return true; + } + if ( ! _stop(target, ui)) { + return false; + } + } return _start(target, ui); } } Index: src/org/netbeans/modules/j2ee/deployment/plugins/api/StartServer.java =================================================================== RCS file: /cvs/j2eeserver/src/org/netbeans/modules/j2ee/deployment/plugins/api/StartServer.java,v retrieving revision 1.5 diff -u -b -r1.5 StartServer.java --- src/org/netbeans/modules/j2ee/deployment/plugins/api/StartServer.java 12 Jan 2005 19:26:02 -0000 1.5 +++ src/org/netbeans/modules/j2ee/deployment/plugins/api/StartServer.java 20 Jan 2005 19:45:42 -0000 @@ -161,4 +161,15 @@ * Returns the host/port necessary for connecting to the server's debug information. */ public abstract ServerDebugInfo getDebugInfo(Target target); + + /** + * Returns true if target server needs a restart for last configuration changes to + * take effect. Implementation should override when communication about this + * server state is needed. + * + * @param target target server; null implies the case where target is also admin server. + */ + public boolean needsRestart(Target target) { + return false; + } }