[JAVA] Tomcat-, Kontext- und Debug-Einstellungen in der IntelliJ Community

Einführung

Ein gutes Umfeld erhöht die Effizienz der Entwicklung.

Ursprünglich war ich ein Eclipse-Benutzer, und der Klassenpfad und die Tomcat-Einstellungen wurden alle von Eclipse vorgenommen, aber nachdem ich IntelliJ kennengelernt hatte, das reibungslos funktioniert, konnte ich dieses klare Gefühl nicht aufgeben und musste wechseln. Ich tat. Für IntelliJ müssen Sie jedoch IntelliJ IDEA Ultimate (kostenpflichtige Version) kaufen, um die "Bequemlichkeit" von Eclipse zu erhalten. Es ist die Macht des Geldes.

Ich bin derzeit aus folgenden Gründen das Prinzip der IntelliJ Community (kostenlos): ・ Ich möchte Bücher und Kurse, Geräte- und Hardwareteile usw. für den Betrag kaufen, den ich jeden Monat in die kostenpflichtige Versionslizenz investiere. ・ Ich möchte die Basis in gewissem Maße selbst festlegen

Letzteres ähnelt möglicherweise dem Gefühl, gelegentlich zu versuchen, ein Paket mit den Befehlen vim und javac zu erstellen, ohne die IDE zu verwenden.

Tor

Konfigurieren Sie Tomcat und Debugger grob in der IntelliJ Community. (1) Mit einer App namens sample-app (2) Verwenden Sie lokales MySQL für DB-Ressourcen. (3) Versuchen Sie, eine Verbindung zu `http: // localhost: 8080 / sample-app /` herzustellen.

Betriebssystem ist Mac.

Kürzung

Da es nur Tomcat verbindet, ist es an der anfänglichen Einstellung von Java-Servlet, JSP und Spring-Frame beteiligt. 0. javax.servlet

  1. pom.xml
  2. `web.xml (Bean-Einstellung)`
  3. `$ {servlet-name} -servlet.xml``` (oder` application-context.xml```)
  4. Einstellungen für Komponentenscan, Annotation-gesteuert, View Resolver, statische Dateizuordnung usw. in `` `servlet.xml```

Ich möchte das usw. weglassen und mich hauptsächlich um DB-Einstellungen und Debugging kümmern.

Erstellen Sie mit IntelliJ ein Paket für eine Web-App

Zuerst

Wählen Sie die erforderliche Version von Apache Tomcat unter Official Home aus und installieren Sie sie.

Gelegentlich gibt es ein Problem, dass der vorhandene Tomcat und die neueste Version von Java nicht übereinstimmen. Wenn Sie jedoch beispielsweise einen kleinen alten Tomcat behalten und Java8 und Java9 einfügen, Dies kann gelöst werden, indem JAVA_HOME, das in den Einstellungen für Umgebungsvariablen auf 9 aktualisiert wurde, auf 8 gesenkt wird.

File -> new -> Project... 1.png

Ich möchte Maven verwenden, also werde ich die Webapp von Maven verwenden.

Geben Sie etwas ein Weiter, Weiter, Weiter ..

s1.png

Ich habe es zufällig behandelt, aber es muss nicht der Anwendungsname sein.

Laut Maven POM Reference

Kurz gesagt, groupId kann ein Name sein, der einen Institutionsnamen enthält, der von anderen Projekten unterschieden werden kann, und artefaktId sollte ein fester Name für das Projekt sein.

Ich erinnere mich, dass mir gesagt wurde, dass ich mich nicht so besonders mit der persönlichen Entwicklung befassen musste.

Laden wir pom in die Bibliothek

Nur der POM wird aus dem Ausgangszustand geladen, in dem der Pom noch nicht gelesen wurde und nicht bereit ist, bereitgestellt zu werden. Ich denke, dass JUnit standardmäßig geschrieben ist, aber ich kann damit keine Anwendung allein entwickeln.

s2.png

Ich habe es bereits ausprobiert und Java-Servlet hinzugefügt und erneut importiert. Ein Java-Servlet wurde ebenfalls zu den externen Bibliotheken hinzugefügt und kann referenziert werden.

Bereitstellen

Konvertieren Sie .java-Dateien in ausführbare .class-Dateien.

s3.png

Während der Entwicklung werden wir es einmal bereinigen, aber da noch nichts vorhanden ist, drücken Sie package, um ein ausführbares Zielpaket zu generieren. Ich denke, der Name war der Standardname.

s4.png

Es ist fertig. Ähnlich wie bei der Ausgabeeinstellung Datei-> Projektstruktur-> Complier.

Die Glühbirnenmarke sagt, dass die Ultimate-Version gut ist lol ..

Das Problem ist, Run-> Edit Configuratons ... ausführen zu lassen.

Es ist genau die gleiche Geschichte, aber drücken Sie oben links +, um Maven hinzuzufügen, und übergeben Sie einen Befehl, der gleichzeitig mit einem Argumentbefehl im Voraus bereinigt und verpackt werden kann.

s5.png

Es ist ein Arbeitsverzeichnis, aber es musste der absolute Pfad des Anwendungsverzeichnisses sein. In meinem Fall habe ich es in das Home-Verzeichnis meines Mac gestellt, also habe ich es so geschrieben. Außerdem ist der Name sample-config angemessen.

-Dmaven.test.skip = true ist eine Option zum Überspringen des Tests, wenn Sie die Bereitstellungszeit verkürzen möchten. Es scheint, dass das Weglassen des Tests ursprünglich nicht empfohlen wird, aber mit zunehmender Anzahl von Dateien wird die Bereitstellungsarbeit selbst schwer Ich benutze es oft.

s6.png

Und das wurde hinzugefügt. Es ist einfach, mit nur einem Klick fortzufahren.

Die Befehlszeile ist am einfachsten

Beziehen Sie den Befehl mvn von der offiziellen Startseite, installieren Sie ihn und

$ cd {$APP_HOME}
$ mvn clean package -Dmaven.test.skip=true

Es ist auch bequem zu schlagen.

Kontext- und Ressourceneinstellungen (Datenbank)

{$catalina_home}/conf/catalina/${host_name}/ Erstellen Sie eine `` `$ {APP_NAME} .xml```-Datei direkt darunter.

{$CATALINA_HOME}Ist dein eigener Apache-Am Standort des Kater${HOST_NAME}Ist okay mit localhost wenn lokal.



#### **`${APP_NAME}.Obwohl es sich um XML handelt, wurde dieses Mal ein Beispiel für die Anwendung erstellt-Ich habe es App genannt. Wenn Sie es also mit einem absoluten Pfad ausdrücken,`**
```Obwohl es sich um XML handelt, wurde dieses Mal ein Beispiel für die Anwendung erstellt-Ich habe es App genannt. Wenn Sie es also mit einem absoluten Pfad ausdrücken,



#### **`/Mein Kater/conf/Catalina/localhost/sample-app.Wird xml sein.`**

Wenn Sie mehrere Apps in einem Tomcat speichern möchten, erstellen Sie für jeden Kontext eine Einstellungsdatei.

{$CATALINA_HOME}/conf/Server direkt darunter.Es gibt XML, und es funktioniert auch, wenn ich es direkt schreibe,


 Dies ist eine Einstellung, die allen Anwendungen gemeinsam ist. Wenn Sie also Einstellungen für jede einzelne Anwendung festlegen möchten, z. B. eine DB-Verbindung, berühren Sie Server.xml nicht direkt unter conf und `` `{$ CATALINA_HOME} / conf / Catalina / $ {HOST_NAME } / `` `Ich denke, es ist besser, eine Einstellungsdatei für jeden Cocontext (Anwendung) direkt unter` zu erstellen.

 Schreiben Sie beispielsweise die MySQL-Einstellungen (DB Connection) in Resource und speichern Sie sie.


#### **`sample-app.xml`**
```xml

<Context docBase="{$APP_HOME}/target/sample-app" path="/sample-app" reloadable="true">

  <Resource 
    name="jdbc/${jdbc_NAME}"
    type="javax.sql.DataSource"
    auth="Container"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://${DB_SERVER}/${DB_NAME}?userUnicode=true&amp;charactorEncoding=UTF-8&amp;autoReconnect=true"
    username="${USER}" password="${PASS}" 
    validationQuery="select CURRENT_TIMESTAMP"
  />

</Context>

Kontext - Informationen zur Anwendungskonfiguration

{$APP_HOME}Ist der absolute Pfad des Verzeichnisses, in dem die App entwickelt wird.


 Es befindet sich direkt unter "{$ APP_HOME} / target / sample-app}", aber es ist der Ort, an dem die Klassendatei bei jeder Bereitstellung ausgeworfen wird, was in IntelliJ festgelegt ist.
 Ich habe es `` `/ target / $ {APP_NAME}` `` gemacht. Wenn ich den Speicherort angeben kann, an dem die Klassendatei gespeichert wird, möchte ich sie benennen.
 Der Standard ist ein relativer Pfad von / webapp, aber diesmal habe ich ihn als absoluten Pfad angegeben.

 * <b> Pfad </ b> <br> Kontextpfad. Der Standardwert ist der Wert des docBase-Attributs. Daher sollte er optional sein, wenn Sie eine Beispiel-App wie den Wert des docBase-Attributs wie dieses Mal verwenden möchten ...
 * <b> reloadable </ b> <br> Wenn Updates für .class- oder .jar-Dateien vorhanden sind, ist dies ein Flag, das bestimmt, ob Tomcat prüft, ob sie automatisch neu geladen werden. Wird während der Entwicklung auf true gesetzt. Ich denke jedoch, dass es für die Leistung besser ist, sie auf false umzuschreiben, wenn die gesamte Entwicklung abgeschlossen ist.

## Ressource - DB-Verbindung einrichten

 Fügen Sie `` `<Ressource> ... </ Resource>` `` für die Anzahl der zu verwendenden Datenbanken hinzu.

 * <b> driverClassName </ b> <br> Vollqualifizierter Klassenname für den JDBC-Treiber.
 * <b> Typ </ b> <br> Ressourcentyp. Wenn Sie eine Datenquelle verwenden, geben Sie `` `javax.sql.DataSource``` an.
 * <b> auth </ b> <br> Ressourcensteuerungsmethode. Geben Sie bei Verwendung einer Datenquelle `` `Container``` an.
 * <b> name </ b> <br> Dies ist der Name der Datenquelle.

 > * Beispiel für jndi (Java Naming and Directory Interface) und Servlet-Einstellungen in Spring Framework <br>
 Es ist, als würde man ein Objekt geben (binden). <br>

#### **`web.Von xml<servlet-mapping>Spezifiziert in<servlet-name>Wenn es sich um eine sampleApp handelt, würde ich wahrscheinlich eine Konfigurationsdatei mit einem solchen Namen schreiben. application-context.Es kann mit XML eingestellt werden.`**
``` > `` `Bean ID``` gab den Namen der DataSource an. Später, wenn Transaktionsverarbeitung usw. hinzugefügt wird,` `` `` ` Es wird anstelle von "ref" verwendet.

Wenn Sie `name =" jdbc / sampleDB "` früher in `Resource``` einfügen, ist es` java: comp / env / jdbc / sampleDB```.

  • url </ b>
    Wenn sowohl der Server als auch der DB-Server lokal sind und Sie eine Verbindung zu einer DB namens sample_DB in MySQL herstellen möchten, können Sie etwas wie `` `jdbc: mysql: // localhost / sample_DB``` verwenden.
    Wenn Sie einen externen DB-Server verwenden möchten, geben Sie die Verbindungsinformationen dieses Servers ein.
    Der Parameter? am Ende ist eine beliebige Option zum Codieren oder Aufrechterhalten der MySQL-Verbindung. ist.
  • Benutzername und Passwort </ b>
    Geben Sie den Namen und das Passwort ein, mit denen Sie sich bei MySQL angemeldet haben.
  • validationQuery </ b>
    Dies ist eine willkürliche Abfrage mit geringer Last, um zu überprüfen, ob eine Verbindung aktiv ist, wenn eine Verbindung aus dem Verbindungspool abgerufen wird, wenn für längere Zeit keine Verbindung besteht.

Dies deckt nicht alle Attribute ab ... zum Beispiel Angenommen, die lokalen Ressourcen werden anstelle der externen Datenbank verwendet, maxIdle </ b> und die Leerlaufeinstellungen des Verbindungspools Ich habe maxActive </ b> für die maximale Anzahl von Verbindungen im Pool weggelassen.

  • Verbindungspool Der Pool hat hier die Bedeutung der Beibehaltung. Der Verbindungspool kann mehrere Verbindungen zwischen der Anwendung und dem DB-Server beibehalten. Es ist eine Funktion zum Wiederverwenden der Verbindung und zum Verwalten des Verbindungsstatus der Datenbank. Schließen (Freigabe) ist ein Prozess, um die verwendete Verbindung für die nächste Verbindung an den Pool zurückzugeben.
  • Leerlauf Dies ist eine gepoolte (reservierte) Verbindung.

Starten Sie Tomcat

$ cd ${apache-Standort des Kater}/bin
$ sh startup.sh

Am Ende

$ sh shutdown.sh

Gelegentlich wird es versehentlich doppelt gestartet, und der Prozess bleibt in diesem Fall bestehen

$ ps -ef | grep tomcat

Geben Sie dann die entsprechende Nummer `` `kill``` ein.

Überprüfen Sie mit dem Browser

s7.png

Was Sie sehen, ist der hier standardmäßig bereitgestellte JSP. Es ist das Ziel.

s8.png

Wenn Sie versuchen, target / sample-app / index.jsp zu löschen, wird die Seite fehlen 404. Sie können es erneut tun, indem Sie es erneut bereitstellen.

Debugger-Einstellungen

bin/setenv.sh Direkt unter dem Verzeichnis bin direkt unter dem Verzeichnis von apache-tomcat Erstellen Sie setenv.sh.

$ cd ${apache-Standort des Kater}/bin
$ vi setenv.sh

Der Inhalt ist wie unten angegeben.

export JPDA_ADDRESS=9999
export JPDA_TRANSPORT=dt_socket

9999 macht keinen Sinn, weil es eine Portnummer ist, die nicht zugewiesen zu sein scheint ... Es ist wie das Bereitstellen und Ausführen auf Port 8080 und das Remote-Debuggen auf Port 9999.

Run -> Edit Configurations... スクリーンショット 2018-02-08 2.58.41.png

Ändern Sie nur die Portnummer in 9999

s9.png

Starten Sie Tomcat mit der Option jpda

$ cd ${apache-Standort des Kater}/bin
$ sh catalina.sh jpda start 

Da es sich um ein Startup mit Optionen handelt, müssen Sie nicht `` $ sh startup.sh``` ausführen.

Stellen Sie ein und stellen Sie sicher, dass der Debugger eingestellt ist

s10.png

Wenn Sie wie gewohnt einen Haltepunkt setzen und den Fehler beheben, ist dies in Ordnung.

Das Ende

Da die anfänglichen Einstellungen nicht täglich vorgenommen werden, fiel es mir im Notfall manchmal schwer, sie als eigenes Memo zu schreiben.

Ich denke, der beste Weg, eine Umgebung aufzubauen, ist, zu Ihnen zu passen. Zu diesem Zweck kann es das erste sein, das verschiedene Dinge ausprobiert, einschließlich der kostenpflichtigen Version.

das ist alles

Korrekturprotokoll

Alle Probennamen wurden zum leichteren Verständnis mit "Probe" vereinheitlicht.