Closed psavva closed 5 months ago
The current setup assumes that (UI) resources can be loaded in a manner that is currently unsupported when you use mvn clean spring-boot:run -Pboot. The functionality of the server is not broken - only the UI is. Try for to load http://localhost:8080/fhir/metadata in your browser. That works like a charm
@psavva you can find documentation on it here: https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/maven-plugin/plugin-info.html
Hi @jvitrifork The API server is not broken. The UI is as stated.
How can we fix this? I assume it's a packing problem?
Can we enhance the pom.yaml to include the resources when run under the maven boot profile?
@psavva the pom/code can probably be tweaked so that the resources can be loaded correctly. But I don't understand why running spring-boot:repackage vs spring-run is problematic for you. It's not something I am going to spend time on investigating.
Hi @jvitrifork it's absolutely no problem for me. I just felt that if it's broken, we should probably fix.
I'll proceed to build and deploy the way that currently works.
If I figure out how to do it, I'll submit a PR.
Resources from "ca.uhn.hapi.fhir:hapi-fhir-testpage-overlay" (like "/templates/home.html") are copied to the target folder using overlays in the maven-war-plugin.
spring-boot:run serves files directly from the src directory and not from target, and does not support overlays.
You could use the maven-dependency-plugin to unpack those resources directly to the correct folder in the src directory. Add this within the "plugins" tags in the pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<id>unpack</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir-testpage-overlay</artifactId>
<type>war</type>
<overWrite>false</overWrite>
<outputDirectory>${project.basedir}/src/main/webapp</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
This is just a workaround because the dependency's files will end up mixed with this project src files, but you you can run and debug the application with spring boot.
If you want quick way to test/start a server i would go with mvn jetty:run
this includes the Overlay.
@psavva do you intend to make a PR improving this?
@jkiddo I'm not sure I know exactly how to fix it. I can try, buy will only be about to do so after completing the EUDCC for Cyprus, probably mid July until I'm back with the HAPI implementation.
I intend to create a PR if I finally understand how to fix it properly...
Well I fix it, it's a naive approach but works for me
just add the home.html under webapp/WEB-INF/templates/home.html
since /fhir works fine I just redirected to it
window.location.href = window.location.origin + "/fhir";
workaround with https://github.com/hapifhir/hapi-fhir-jpaserver-starter/issues/165#issuecomment-749563314 - closing for now. Will reopend on request @psavva :)
If you take a fresh checkout of hapi-fhir-jpaserver-starter, and execute the following:
1) mvn clean package spring-boot:repackage -Pboot && java -jar target/ROOT.war This works perfectly and as expected
2) mvn clean spring-boot:run -Pboot This builds fine, howerver when executing I come into the following errors: java.lang.AbstractMethodError: Receiver class org.apache.tomcat.websocket.server.WsSessionListener does not define or inherit an implementation of the resolved method 'abstract void sessionCreated(javax.servlet.http.HttpSessionEvent)' of interface
And when I try to access localhost:8080
Please can you help point me to the right direction on whats happening here? Why these errors, even with a fresh checkout without any of my changes to the codebase.