Итак, как видно из названия этого вопроса, я работаю с проектом Vaadin на Netbeans. После запуска сервера GlassFish в ISOLATION проблем не возникает; Журнал вывода для процесса БД базы данных Java и сервера GlassFish не показывает ошибок. В качестве еще одного доказательства я могу успешно перейти на локальный сервер, который был запущен, как показано на следующем снимке экрана:
Как видно из URL, порт, который я выбрал для этого сервера, был 8080 (порт администратора 4848, и я тоже могу туда успешно). Однако, когда я запускаю свой проект Vaadin, который, как я предполагал, автоматически запускает сервер, а затем отображает результаты запуска проекта там (согласно https://vaadin.com/docs/v8/framework/getting-started/getting-started-netbeans.html),, я даже не могу подключиться к localhost: 8080 больше Для справки, у меня выбран сервер в настройках проекта (щелкните правой кнопкой мыши мой проект -> Свойства -> Выполнить -> Сервер [выпадающий список]).
Первоначально я думал, что это просто какая-то проблема с кодом внутри моего проекта (и это может быть его частью), но что меня отговаривает от этого предположения:
1) Проект строится успешно, без каких-либо заявлений о сбое
2) Значок сервера не отображает зеленый значок воспроизведения рядом с ним (я использую GlassFish Server, а не Mark 2, но в любом случае не показываю значок), что происходит при запуске в изоляция:
3) Существует значительная разница между тем, когда я просто запускаю проект, и тем, когда я запускаю сервер вручную и ТО, после чего запускаю проект. Для справки, вот результат моей попытки подключения к серверу только после запуска проекта:
Вот результат доступа к серверу после первого запуска сервера вручную, а затем запуска проекта; обратите внимание, что имя проекта nchandlerv2, но независимо от того, что я поставил после localhost: 8080 / (например, на картинке ниже я использовал nchandl, который, как я думал, полностью потерпел неудачу):
Однако, что меня особенно смущает, так это то, что в этом случае я все еще могу перейти на localhost: 8080 просто отлично (если после него ничего не добавлено). Поэтому я думаю, что мои вопросы сводятся к следующему:
1) Почему сервер не запускается автоматически при запуске проекта (или, по крайней мере, почему это так)? Я предоставил код для метода init моего проекта внизу, но я подумал, что это действительно все, что нужно для запуска проекта (мой класс MainUI расширяет пользовательский интерфейс (который сам из Vaadin), а затем перезаписывает метод init)
2) Почему сервер сталкивается с ошибкой HTTP, когда я сначала вручную запускаю сервер, а затем запускаю проект?
Вот код:
import com.vaadin.annotations.Push;
import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.Page;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.themes.ValoTheme;
import com.cisco.stbarth.netconf.anc.NetconfSSHClient;
import com.vaadin.ui.UI;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.ArrayList;
import javax.servlet.annotation.WebServlet;
@Theme("adtportal")
@Push
public class MainUI extends UI{
String hostName;
String ssh_ip;
String username;
String password;
String pathToYangRepoHTTP;
//String pathToYangRepoSCP; <<TO BE USED POTENTIALLY LATER>>
//The below returns in the format: [(SC1, ([YP1_1, YC1_1, XML1_1],
[YP1_2, YC1_2, XML1_2] ...)), (SC2, ...) .... ]
LinkedHashMap<String, ArrayList<String[]>> showCommandsToPathYangXML =
new LinkedHashMap<>();
NetconfSSHClient client;
YangParser parser;
Collection <String> capabilities;
//Curretnly, whichView's values correspond to the following transitions:
//0: go to RetrieverView
//1: go to ShowCommandView
//2: go to TabView (one tab per show command), each tab of which contains subtabs for YANG paths
int whichView;
@Override
protected void init(VaadinRequest vaadinRequest) {
Page.getCurrent().setTitle("New NETCONF Tool");
addStyleName(ValoTheme.UI_WITH_MENU);
showNextView();
}
//oldShowValues is only really applicable when going from TabView back to ShowCommandView
public void showNextView(String ... oldShowValues) {
switch (whichView) {
case 0:
setContent(new RetrieverView(this));
//addStyleName("loginview");
break;
case 1:
//setSizeFull();
getPage().setTitle("Netconf session with: " + hostName);
setContent(new ShowCommandView(this));
// Might be transferring from 2 to 1, not just from 0 to 1
//removeStyleName(getStyleName());
//addStyleName("showcommandview");
break;
case 2:
setContent(new TabView(this));
//removeStyleName("showcommandview");
//addStyleName("tabview");
break;
default:
System.out.println("To be further developed.");
break;
}
}
@WebServlet(urlPatterns = {"/hello"}, name = "MyUIServlet",
asyncSupported = true)
@VaadinServletConfiguration(ui = MainUI.class, productionMode = true)
public static class MyUIServlet extends VaadinServlet {
}
}
Редактировать: По-видимому, это было в выходных данных сервера Glassfish (и появилось только после того, как я попытался получить доступ из любого места на локальном хосте: 8080 (например, / nchandler) - то есть его не было, когда я запускал сервер изолированно):
Severe: SEC5054: Certificate has expired: [
[
Version: V3
Subject: CN=GTE CyberTrust Root 5, OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US
Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
Key: Sun RSA public key, 2048 bits
modulus: 23741889829347261660812437366387754385443431973861114865490414153884050331745811968523116847625570146592736935209718565296053386842135985534863157983128812774162998053673746470782252407673402238146869994438729551246768368782318393878374421033907597162218758024581735139682087126982809511479059100617027892880227587855877479432885604404402435662802390484099065871430585284534529627347717530352189612077130606642676951640071336717026459037542552927905851171460589361570392199748753414855675665635003335769915908187224347232807336022456537328962095005323382940080676931822787496212635993279098588863972868266229522169377
public exponent: 65537
Validity: [From: Fri Aug 14 07:50:00 PDT 1998,
To: Wed Aug 14 16:59:00 PDT 2013]
Issuer: CN=GTE CyberTrust Root 5, OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US
SerialNumber: [ 01b6]
Certificate Extensions: 4
[1]: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:true
PathLen:5
]
[2]: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
[CertificatePolicyId: [1.2.840.113763.1.2.1.3]
[] ]
]
[3]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
Key_CertSign
Crl_Sign
]
[4]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 76 0A 49 21 38 4C 9F DE F8 C4 49 C7 71 71 91 9D v.I!8L....I.qq..
]
]
]