in resin/src/main/java/org/intellij/j2ee/web/resin/ResinStartupPolicy.java [62:171]
public JavaParameters createCommandLine(final CommonModel commonModel) throws ExecutionException {
final ResinModel resinModel = (ResinModel)commonModel.getServerModel();
final JmxRemotePrepareResult prepareResult;
if (resinModel.hasJmxStrategy()) {
prepareResult = JmxRemoteUtil.prepare(resinModel);
JmxRemoteUtil.apply(resinModel, prepareResult);
}
else {
prepareResult = null;
}
if (prepareResult == null) {
resinModel.setAccessFile(null);
resinModel.setPasswordFile(null);
}
else {
resinModel.setAccessFile(prepareResult.getAccessFile());
resinModel.setPasswordFile(prepareResult.getPasswordFile());
}
final ResinConfiguration resinConfiguration = resinModel.getOrCreateResinConfiguration(true);
ResinInstallation installation = resinConfiguration.getInstallation();
final String homePath = FileUtil.toSystemDependentName(installation.getResinHome().getPath());
final JavaParameters parameters = new JavaParameters();
String charset = resinModel.getCharset();
if (charset != null && !charset.isEmpty()) {
parameters.setCharset(Charset.forName(resinModel.getCharset()));
}
if (resinConfiguration.getInstallation().getVersion().allowXdebug()) {
loadResinRunProp(DEBUG_VM_PARAMS_PROP, parameters);
}
ResinVersion resinVersion = resinConfiguration.getInstallation().getVersion();
parameters.setWorkingDirectory(homePath);
parameters.setMainClass(resinVersion.getStartupClass());
if (resinModel.hasJmxStrategy()) {
loadResinRunProp(JMX_VM_PARAMS_PROP, parameters, String.valueOf(resinModel.getJmxPort()));
JmxRemoteUtil.apply(parameters.getVMParametersList(), prepareResult);
}
loadResinRunProp(RESINHOME_VM_PARAMS_PROP, parameters, homePath);
if (homePath.indexOf(' ') != -1 && !allowsRunWithWhiteSpace(resinVersion)) {
throw new ExecutionException(ResinBundle.message("resin.run.error.invalid.path", homePath));
}
loadResinRunProp(JAVA_LIB_PATH_VM_PARAMS_PROP, parameters, homePath);
ParametersList parametersList = parameters.getProgramParametersList();
parametersList.add(getResinRunProperty(COMMAND_LINE_CONF_ARG_PROP)[0],
resinConfiguration.getConfigFile().getAbsolutePath());
String serverId = resinConfiguration.getServerId();
if (!StringUtil.isEmpty(serverId)) {
parametersList.add(getResinRunProperty(COMMAND_LINE_SERVER_ID_ARG_PROP)[0], serverId);
loadResinRunProp(SERVER_ID_VM_PARAMS_PROP, parameters, serverId);
}
String additionalParameters = resinModel.getAdditionalParameters();
if (additionalParameters != null && !additionalParameters.isEmpty()) {
parametersList.addParametersString(additionalParameters);
}
loadResinConfProperties(homePath, parameters);
final PathsList classpath = parameters.getClassPath();
//Include application server libraries
VirtualFile[] files = commonModel.getApplicationServer().getLibrary().getFiles(OrderRootType.CLASSES);
for (VirtualFile file : files) {
classpath.add(file.getPresentableUrl());
}
File[] allJars = resinConfiguration.getInstallation().getLibFiles(true);
for (File jar : allJars) {
String s = jar.getAbsolutePath();
if (!classpath.getPathList().contains(s)) {
classpath.add(s);
}
}
if (resinModel.isAutoBuildClassPath()) {
Collection<VirtualFile> outputAndLibs = new ArrayList<>();
for (DeploymentModel model : commonModel.getDeploymentModels()) {
final Artifact artifact = model.getArtifact();
if (artifact == null) {
continue;
}
final Collection<WebFacet> webFacets =
JavaeeArtifactUtil.getInstance().getFacetsIncludedInArtifact(commonModel.getProject(), artifact, WebFacet.ID);
for (WebFacet webFacet : webFacets) {
ModuleRootManager mrm = ModuleRootManager.getInstance(webFacet.getModule());
final VirtualFile[] roots = mrm.orderEntries().withoutSdk().recursively().exportedOnly().getClassesRoots();
Collections.addAll(outputAndLibs, roots);
}
}
for (VirtualFile vfile : outputAndLibs) {
classpath.add(vfile);
}
}
return parameters;
}