Jak się robi folder w adresie "example.com/folder" w Tomcat 9

Jak się robi folder w adresie "example.com/folder" w Tomcat 9
TR
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:26
0

Jestem początkujący w javie i w sumie to głównie przerabiam tutoriale i trochę je zmieniam. Pytanie dotyczy Tomcata 9. W sumie zaispirował mnie Intellij, gdyż domyślnie tworzy linki typu localhost/projekt_war w Run/Configuration, czyli z folderem po domenie.

Jak się tworzy taki adres w Tomcat 9? Moja próba była taka:

Kopiuj
$ cat /home/u/opt/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="default.local"  appBase="default"
            unpackWARs="true" autoDeploy="true">
        <Context path="/default_war" />
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>


    </Engine>
  </Service>
</Server>
u@i3 ~/opt/tomcat

Kopiuj
$ cat conf/Catalina/default.local/ROOT.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.base}/deploy/default_war.war">
</Context>
u@i3 ~/opt/tomcat
$ 
edytowany 2x, ostatnio: trzczy
NS
  • Rejestracja:ponad 7 lat
  • Ostatnio:4 dni
  • Postów:455
1

Ale, że ... co?

TR
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:26
0

@NeutrinoSpinZero: mam stronę pod adresem przykładowo http://example.com, a chcę mieć pod adresem http://example.com/folder

edytowany 1x, ostatnio: trzczy
NS
  • Rejestracja:ponad 7 lat
  • Ostatnio:4 dni
  • Postów:455
0

No to wystaw kontroler na takim URI.

mjskr
  • Rejestracja:prawie 5 lat
  • Ostatnio:około rok
0

Najprościej:

  • zbuduj war-a Mavenem lub Gradlem, można też ręcznie ale to dodatkowa robota (i nauka)
  • zmień mu nazwę na ROOT.war
  • wyrzuć wszystko z [katalog Tomcata]/webapps i umieść w nim ROOT.war albo lepiej - zrobić link symboliczny ln -s [ścieżka do WARa] [katalog Tomcata]/webapps/ROOT.war
  • uruchom Tomcata

Tym sposobem bez zmiany czegokolwiek w [katalog Tomcata]/conf będziesz mieć dostępną swoją aplikację pod adresem example.com/

edytowany 1x, ostatnio: mjskr
TR
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:26
0

@mjskr: Jeśli idzie o http://example.com to mam ogarnięte. Buduję ręcznie w Intellij archiwum war i robię deploy do tomcata. Ale mi chodzi o uzyskanie adresu z folderem po slashu, czyli czegoś takiego http://example.com/folder Takie tylko przerzucenie tej strony pod taki adres.

TR
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:26
0

@NeutrinoSpinZero: Dzięki jest to jakieś wyjście. Tyle że jest to strona bez kontrolera. Zrobiłem ją, opierając się o ten tutorial: https://www.codejava.net/java-ee/servlet/java-servlet-quick-start-tomcat-xml-config

Wiem, że można przy pomocy Springa uzyskać kontroler, a czy jakaś lżejsza metoda jest możliwa? Uwzględniwszy, że strona jest niewielka. Może tak, czy bez frameworka się da łątwo to zrobić?

E9
  • Rejestracja:ponad 8 lat
  • Ostatnio:dzień
  • Postów:216
1

Abstrahując od tematu...

Jestem początkujący w javie

Czemu więc zaczynasz za przeproszeniem od d**y strony?

edytowany 1x, ostatnio: Emdzej93
TR
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:26
0

@Emdzej93: Bo strony internetowe to coś co na wczesnym etapie nauki można robić. Coś pożytecznego a nie tylko ćwiczenia.

E9
Robisz stronę internetową w Javie?
TR
Mój obecny projekt jest w Spring MVC i to jest CMS do wstawiania fotek do galerii. Natomiast uczę się z różnych tutoriali i chcę je jakoś obsługiwać przez tomcata.
NS
  • Rejestracja:ponad 7 lat
  • Ostatnio:4 dni
  • Postów:455
0

@trzczy: jak nie chcesz marnować czasu, to poczytaj więcej, zorientuj się i naucz podstaw programowania i Javy. Przez te xmle czy jsp to tylko się zapłaczesz i zniechecisz.

TR
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:26
0

@NeutrinoSpinZero: To na jakim forum dowiem się o tego tomcata?

NS
Nie wiele osób tego używa, bo mało kto deployuje apki ręcznie na tomcata jako war. Teraz jest Spring Boot i on robi to za programistę, więc siłą rzeczy zapomina się o tym co jest under the hood.
mjskr
  • Rejestracja:prawie 5 lat
  • Ostatnio:około rok
1

Spróbuj przez managera - http://localhost:8080/manager/html. W sekcji WAR file to deploy wskazujesz plik war, którego nazwa będzie contextem czyli jeśli chcesz mieć apkę dostępną pod adresem example.com/tentego to musisz zdeployować plik o nazwie tentego.war.

TR
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:26
1

@mjskr: dzięki. rzeczywiście działa. Moim błędem było opieranie się na sposobie, którego celem było właśnie utworzenie adresu typu ROOT.

Przy okazji ogarnąłem, jak sprawę załatwić bez menegera. Oto metoda:

Kopiuj
.
├── conf
│   ├── Catalina
│   │   └── default.local
│   │       └── default_war.xml
│   └── server.xml
├── default
└── deploy
    └── default_war.war

##conf/Catalina/default.local/default_war.xml

Kopiuj
<Context docBase="${catalina.base}/deploy/default_war.war">
</Context>

##/conf/server.xml

Kopiuj
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="default.local"  appBase="default"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

edytowany 5x, ostatnio: trzczy
AK
Co cehsz przekazać publikując ten plik konfiguracyjny?
TR
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:26
0

To że jest to wykonalne

AK
Która linia roziwązuje Twój problem? Co to ma wspólnego ze springiem, o którym piszesz? Masz świadomość, że to już archaiczne sposoby?
TR
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:26
0

@AnyKtokolwiek:
W pliku default_war.xml za wiele się nie dzieje, więc to oczywiste, która linia. Po prostu konfiguracja danego hosta virtualnego albo ma ten plik albo nie ma. Natomiast w server.xml istotna jest ta linia name="default.local" appBase="default"

Wrzuciłem całość, bo dla mnie to oczywiste, że chodzi tylko o te elementy, ale prawda, mogłem skrócić i wytłumaczyć. Dziękuję ci za słuszną uwagę.

Co do springa, to mogę oczywiście wymyślić teorię tłumaczenia, co ma piernik do wiatraka, ale prawda jest taka, że to pytanie dotyczyło wyłącznie tomcata. Więc trochę zdemaskowałeś pewne trollowe cechy, że interesujesz się mną, moim rozwojem, a nie podchodzisz do wątku tak po prostu. Ja nie muszę zawsze zdrawdzać wszystkiego po co, dlaczego, a czemu.

Jakieś pytania o php, mamrotania, ogólniki byle by kogoś na czymś przyłapać to istne kuriozum. Zajmij się może gościu programowaniem.

AK
miałeś tag "spring", który zdjąłeś.
TR
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:26
0

@AntyKtokolwiek:
To pisz od razu jak człowiek, "czemu tu jest tag spring". A poza tym tagu spring tu nie było i go nie zdejmowałem. Ja w sprawach nauki nie kłamię. Nie chcę się kreować na jakiegoś mistrza forum czy super gawędziarza, tylko interesuje mie sam temat i wiedza. Hmm może za dużo komputerów, biedaku?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.