Ich versuche this example in eine Spring Boot-Anwendung zu verwandeln, das Problem liegt darin, dass RestfulServer
ein Servlet ist, und ich nicht wirklich versuche, eine separate App zu machen, sondern eine einzige, die mehr oder weniger dieses Servlet erweitert Problem scheint mir zu laufen, aber ist das, was ich mit WebApplicationInitializer
und SpringBootApplicationInitializer
probiert habe, dass sie das Servlet nicht initialisieren, bevor sie andere Klassen ausführen. Wie kann ich die JpaServerDemo
Klasse in Spring Boot umwandeln (Anmerkung: wir don ‚müssen t die 2. Servlet)Wie kann ich meine Spring Boot App auf einem externen Servlet basieren?
Update das ist das letzte, was ich versuchte, aber ich auch verschiedene Iterationen von nur WebApplicationInitializer
, oder Dinge zu tun, in derversuchtMethode, die heikel scheint, weil es keine servletContext
hat, und onStartup
kein ApplicationContext
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
RestfulServer server = new RestfulServer();
servletContext.addServlet("restful", server);
/*
* We want to support FHIR DSTU3 format. This means that the server
* will use the DSTU3 bundle format and other DSTU3 encoding changes.
*
* If you want to use DSTU1 instead, change the following line, and change the 3 occurrences of dstu2 in web.xml to dstu1
*/
server.setFhirContext(FhirContext.forDstu3());
WebApplicationContext myAppCtx = this.createRootApplicationContext(servletContext);
// Get the spring context from the web container (it's declared in web.xml)
/*
* The BaseJavaConfigDstu3.java class is a spring configuration
* file which is automatically generated as a part of hapi-fhir-jpaserver-base and
* contains bean definitions for a resource provider for each resource type
*/
List<IResourceProvider> beans = myAppCtx.getBean("myResourceProvidersDstu3", List.class);
server.setResourceProviders(beans);
/*
* The system provider implements non-resource-type methods, such as
* transaction, and global history.
*/
server.setPlainProviders(myAppCtx.getBean("mySystemProviderDstu3", JpaSystemProviderDstu3.class));
/*
* The conformance provider exports the supported resources, search parameters, etc for
* this server. The JPA version adds resource counts to the exported statement, so it
* is a nice addition.
*/
IFhirSystemDao<Bundle, Meta> systemDao = myAppCtx.getBean("mySystemDaoDstu3", IFhirSystemDao.class);
DaoConfig daoConfig = myAppCtx.getBean(DaoConfig.class);
JpaConformanceProviderDstu3 confProvider = new JpaConformanceProviderDstu3(server, systemDao, daoConfig);
confProvider.setImplementationDescription("Example Server");
server.setServerConformanceProvider(confProvider);
/*
* Enable ETag Support (this is already the default)
*/
server.setETagSupport(ETagSupportEnum.ENABLED);
/*
* This server tries to dynamically generate narratives
*/
FhirContext ctx = server.getFhirContext();
ctx.setNarrativeGenerator(new
DefaultThymeleafNarrativeGenerator());
/*
* Default to JSON and pretty printing
*/
server.setDefaultPrettyPrint(true);
server.setDefaultResponseEncoding(EncodingEnum.JSON);
/*
* -- New in HAPI FHIR 1.5 --
* This configures the server to page search results to and from
* the database, instead of only paging them to memory. This may mean
* a performance hit when performing searches that return lots of results,
* but makes the server much more scalable.
*/
server.setPagingProvider(myAppCtx.getBean(DatabaseBackedPagingProvider.class));
/*
* Load interceptors for the server from Spring (these are defined in FhirServerConfig.java)
*/
Collection<IServerInterceptor> interceptorBeans = myAppCtx.getBeansOfType(IServerInterceptor.class).values();
for (
IServerInterceptor interceptor : interceptorBeans)
{
server.registerInterceptor(interceptor);
}
/*
* If you are hosting this server at a specific DNS name, the server will try to
* figure out the FHIR base URL based on what the web container tells it, but
* this doesn't always work. If you are setting links in your search bundles that
* just refer to "localhost", you might want to use a server address strategy:
*/
//setServerAddressStrategy(new HardcodedServerAddressStrategy("http://example.com/fhir/baseDstu2"));
/*
* If you are using DSTU3+, you may want to add a terminology uploader, which allows
* uploading of external terminologies such as Snomed CT. Note that this uploader
* does not have any security attached (any anonymous user may use it by default)
* so it is a potential security vulnerability. Consider using an AuthorizationInterceptor
* with this feature.
*/
server.registerProvider(myAppCtx.getBean(TerminologyUploaderProviderDstu3.class));
}
@Override
protected SpringApplicationBuilder configure(final SpringApplicationBuilder builder) {
return builder;
}
public static void main(String[] args) {
configureApplication(new SpringApplicationBuilder()).run(args);
}
private static SpringApplicationBuilder configureApplication(final SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
können Sie hinzufügen, wie Sie konfiguriert haben WebApplicationInitializer – kuhajeyan
@kuhajeyan das letzte, was enthalten Ich habe versucht, habe ich versucht, einige Dinge – xenoterracide