Попытка запустить проект веб-приложения Vaadin на Netbeans через GlassFish, но, очевидно, сервер не запускается автоматически - PullRequest
0 голосов
/ 04 июля 2018

Итак, как видно из названия этого вопроса, я работаю с проектом Vaadin на Netbeans. После запуска сервера GlassFish в ISOLATION проблем не возникает; Журнал вывода для процесса БД базы данных Java и сервера GlassFish не показывает ошибок. В качестве еще одного доказательства я могу успешно перейти на локальный сервер, который был запущен, как показано на следующем снимке экрана:

enter image description here

Как видно из URL, порт, который я выбрал для этого сервера, был 8080 (порт администратора 4848, и я тоже могу туда успешно). Однако, когда я запускаю свой проект Vaadin, который, как я предполагал, автоматически запускает сервер, а затем отображает результаты запуска проекта там (согласно https://vaadin.com/docs/v8/framework/getting-started/getting-started-netbeans.html),, я даже не могу подключиться к localhost: 8080 больше Для справки, у меня выбран сервер в настройках проекта (щелкните правой кнопкой мыши мой проект -> Свойства -> Выполнить -> Сервер [выпадающий список]).

Первоначально я думал, что это просто какая-то проблема с кодом внутри моего проекта (и это может быть его частью), но что меня отговаривает от этого предположения:

1) Проект строится успешно, без каких-либо заявлений о сбое

2) Значок сервера не отображает зеленый значок воспроизведения рядом с ним (я использую GlassFish Server, а не Mark 2, но в любом случае не показываю значок), что происходит при запуске в изоляция:

enter image description here

3) Существует значительная разница между тем, когда я просто запускаю проект, и тем, когда я запускаю сервер вручную и ТО, после чего запускаю проект. Для справки, вот результат моей попытки подключения к серверу только после запуска проекта:

enter image description here

Вот результат доступа к серверу после первого запуска сервера вручную, а затем запуска проекта; обратите внимание, что имя проекта nchandlerv2, но независимо от того, что я поставил после localhost: 8080 / (например, на картинке ниже я использовал nchandl, который, как я думал, полностью потерпел неудачу):

enter image description here

Однако, что меня особенно смущает, так это то, что в этом случае я все еще могу перейти на 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..
]
]
]

1 Ответ

0 голосов
/ 05 июля 2018

ОК, очевидно, проблема заключалась в переменных среды моей системы; Когда-то в прошлом я немного возился с моей переменной path и обнаружил, что забыл добавить C: \ Windows \ System32 обратно в путь к моей системе.

После сообщения «BUILD SUCCESSFUL» в выходных данных было фактически другое сообщение: «cmd не распознается как внутренняя или внешняя команда». Поиск решения в сети и исправление переменной среды теперь позволяют запускать сервер при запуске проекта.

...