Archief - Java API met HTML front end combineren

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

stevedc

Legacy Member
Ik ben op zoek naar wat meer informatie of iemand die weet hoe dit best aan te pakken.
Ik heb een JAVA REST api gemaakt met daarbij een bijhorende HTML front end pagina om daar mee te spreken. Nu wil ik graag dat ik deze beide op één en dezelfde server kan deployen zodat dit via één adres kan aangesproken worden.
Heeft hier iemand enige idee hoe hier aan te beginnen? Of moet ik de twee juist combineren in 1 build process (eventueel toch da applicatie anders ontwerpen met java framework dat html paginas maakt?), zodat wanneer ik dit opstart gewoon naar bijvoorbeeld localhost:8080 kan gaan en alles loopt zonder problemen?

Tyfius

Legacy Member
Ik ken niets van Java, maar ik doe iets gelijkaardigs in .NET.

Ik heb 2 aparte projecten: 1 voor de API, en 1 voor de HTML front-end. Mijn API is zo geconfigureerd via de config dat hij luistert op /api/. (localhost/api/users, bijvoorbeeld). Als post-build step kopieer ik dan de HTML website in de folder van de API en deploy dit naar IIS. (In jouw geval zal dat waarschijnlijk via Tomcat of iets dergelijks gaan?) Vermits IIS als default de index.html serveert gaat die mijn HTML website naar de user doorsturen, en alle calls die ik vandaar naar /api/ doe komen dan op mijn backend uit.

dimio111

Legacy Member
Is de front-end gewoon html, css, javascript.
En spreek je de backend puur aan met javascript?

Dan kan je de front-end draaien in apache en je backend gewoon opstarten als java proces in de achtergrond.
Dit kan gerust op dezelfde server.
Je zet 2 poorten open, 1 op 80 (voor je front end) en 1 naar keuze voor je backend calls te doen.

Optie 2:
spring boot met mustache ofzo.
Spring boot = backend
mustache is 1 van de vele talen die je kan gebruiken als frontend voor spring boot.

stevedc

Legacy Member
dimio111 zei:
Is de front-end gewoon html, css, javascript.
En spreek je de backend puur aan met javascript?

Dan kan je de front-end draaien in apache en je backend gewoon opstarten als java proces in de achtergrond.
Dit kan gerust op dezelfde server.
Je zet 2 poorten open, 1 op 80 (voor je front end) en 1 naar keuze voor je backend calls te doen.

Optie 2:
spring boot met mustache ofzo.
Spring boot = backend
mustache is 1 van de vele talen die je kan gebruiken als frontend voor spring boot.

Ja de back end wordt inderdaad enkel met javascript aangesproken.
Kan dit kopieren dan eigenlijk met een gradle script gebeuren. Ik heb nu wel een script staan om dan de java api te deployen het gene hieronder. Maar weet er iemand juist wat ik dan moet aanpassen om dan die html er bij te steken?

buildscript{
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.2.RELEASE")
}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'

jar{
baseName = 'gs-rest-service'
version = '1.0.0'
}

bootRun{
systemProperty 'server.port', '8086'
}

repositories{
mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.8.Final'
compile group: 'org.postgresql', name: 'postgresql', version: '42.0.0'
compile("org.springframework.boot:spring-boot-starter-web")
testCompile('org.springframework.boot:spring-boot-starter-test')
}

Prior

Legacy Member
Als dat een war-file moet genereren via Gradle, zou ik dit eens proberen.

Je hebt ook apply plugin: 'js' (javascript) en apply plugin: 'css' maar weet niet of dat expliciet nodig is voor jou.

Misschien moet je uw pom.xml aanpassen als je dat hebt ...
(lang geleden dat ik nog eens met een Java-httpservlet heb gewerkt voor avondschool)

<web-app ...>

<servlet>
<servlet-name>Projectnaam</servlet-name>
<servlet-class>api.Projectnaam</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Projectnaam</servlet-name>
<url-pattern>/api/Projectnaam</url-pattern>
</servlet-mapping>

</web-app>

wordt ter illustratie ==>

Frontend:
Code:
http://localhost:8080
API:
Code:
http://localhost:8080/api/Projectnaam?name=Stevedc

dimio111

Legacy Member
Je kan het ook gewoon als 2 losse zaken zien.

als het om een linux server gaat dump je je front-end files gewoon in /var/www/html.
Dan zal de apache server (die je moet installeren) die files oppikken en serven op poort 80.

Daarna deploy je de java applicatie (Kan via gradle).

Dat is de simpelste manier.

OF
Je steekt je static files gewoon in de resources folder van je spring boot project.

Dan moet je 2 dingen uitzoeken, web mvc aanzetten in spring boot. (Met annotaties mogelijk normaal)
En er effectief voor zorgen dat hij de resources folder mee packaged tijdens build.
Dat laatste moet manueel configureren als je met maven werkt, misschien is dat niet nodig met gradle.

Als je je static files mee packaged met spring-boot zijn die over dezelfde poort als je applicatie te benaderen.
In jou geval bv. http://localhost:8086/index.html
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan