Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Seeking for help for IPF XDS tutorial

71 views
Skip to first unread message

Bo Vane

unread,
Jun 8, 2024, 5:25:44 AM6/8/24
to ipf-user
Hi IPF developer's
I have some questions about the introductory code about XDS in the IPF framework that I would like to ask. The questions are as follows:

Regarding the Entry point in the RouteBuilder, what parameters are supported inside? Is there any corresponding documentation available? For example, in the Iti18RouteBuilder, I added some logging parameters to the Entry point of iti-18. Can I add other parameters as well? Is there any documentation I can refer to? I would like to know what other parameters I can add. For instance, if I want to enable audit functionality, how should I do it?
截屏2024-06-08 13.55.38.png

I want to add audit configuration based on the XDS tutorial code. How should I proceed? Currently, I am configuring LoggingAuditMessageQueue in the corresponding context.xml to directly print audit information to the console. However, I want to use RecordingAuditMessageQueue. How should I configure this? I am unsure how to access this message queue after configuring the audit message queue. Thank you very much for your help.

Here is the code image as shown below:
截屏2024-06-08 14.09.20.png
Full context.xml are as follows

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xmlns:ipf="http://openehealth.org/schema/ipf-commons-core"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
http://openehealth.org/schema/ipf-commons-core
http://openehealth.org/schema/ipf-commons-core.xsd">

<!-- The following imports are required to configure CXF. cxf-servlet
is imported to configure CXF to run with servlet support. This
allows us to use Tomcat with the CXFServlet instead of using CXF
with a standalone Jetty server. -->
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<!-- Camel context and producer -->
<camel:camelContext id="camelContext">
<camel:jmxAgent id="agent" disabled="true" />
<camel:routeBuilder ref="iti4142RouteBuilder"/>
<camel:routeBuilder ref="iti43RouteBuilder"/>
<camel:routeBuilder ref="iti18RouteBuilder"/>
</camel:camelContext>

<ipf:globalContext id="globalContext"/>

<!-- Our route builders for the ITI transactions -->
<bean id="iti4142RouteBuilder"
class="org.openehealth.ipf.tutorials.xds.Iti4142RouteBuilder">
</bean>

<bean id="iti43RouteBuilder"
class="org.openehealth.ipf.tutorials.xds.Iti43RouteBuilder">
</bean>

<bean id="iti18RouteBuilder"
class="org.openehealth.ipf.tutorials.xds.Iti18RouteBuilder">
</bean>

<!-- The store that contains all the in-memory documents and their meta data -->
<bean id="dataStore" class="org.openehealth.ipf.tutorials.xds.DataStore" />

<!-- Auditing -->
<bean id="auditContext" class="org.openehealth.ipf.commons.audit.DefaultAuditContext">
<property name="auditEnabled" value="true"/>
<property name="auditSourceId" value="sourceId"/>
<property name="auditMessageQueue" ref="mockedSender"/>
<!-- default
<property name="auditRepositoryHost" value="localhost"/>
<property name="auditRepositoryPort" value="514"/>
<property name="auditRepositoryTransport" value="UDP"/>
-->
</bean>

<!-- <bean id="mockedSender" class="org.openehealth.ipf.commons.audit.queue.RecordingAuditMessageQueue"/>-->
<bean id="mockedSender" class="org.openehealth.ipf.commons.audit.queue.LoggingAuditMessageQueue"/>

<bean id="logFileNamePrefix" class="java.lang.String">
<!-- <constructor-arg value="#{systemProperties['IPF_LOG_DIR']}/[processId]/[date('yyyyMMdd-HH00')]/[sequenceId]" />-->
<constructor-arg value="/Users/bovane/Documents/hos-app/logs" />
</bean>

<bean id="serverInLogger" class="org.openehealth.ipf.commons.ihe.ws.cxf.payload.InPayloadLoggerInterceptor">
<constructor-arg value="#{@logFileNamePrefix}-server-in.txt" />
</bean>

<bean id="serverOutLogger" class="org.openehealth.ipf.commons.ihe.ws.cxf.payload.OutPayloadLoggerInterceptor">
<constructor-arg value="#{@logFileNamePrefix}-server-out[partialResponse ? '-partial' : ''].txt" />
</bean>

</beans>

<!--http-conf:conduit name="*.http-conduit">
<http-conf:client ProxyServer="localhost" ProxyServerPort="8888" ProxyServerType="HTTP" AllowChunking="false"/>
</http-conf:conduit-->



Best Regards
Bo

Dmytro Rud

unread,
Jun 8, 2024, 5:47:21 AM6/8/24
to ipf-...@googlegroups.com
Hello Bo

1. In the IPF documentation, descriptions of all Camel components end with a set of links related to particular features or cross-cutting concerns.  For example, on  the bottom of https://oehf.github.io/ipf-docs/docs/ihe/iti18/ you will see the following list:

image.png

Additional URI parameters are described in these linked documents.  For example, URI parameters "audit" and "auditContext" are described in https://oehf.github.io/ipf-docs/docs/ihe/atna/ (first link on the picture), "secure", "sslContextParameters", and "hostnameVerifier" -- in https://oehf.github.io/ipf-docs/docs/ihe/wsSecureTransport (third link), and so forth.

2. Yes, to configure RecordingAuditMessageQueue for the Audit Trail, you have to instantiate it as a bean and reference this bean in the Audit Context.  The same bean shall be then wired into your business logic/unit test -- using either a field annotation:

    @Autowired
    private RecordingAuditMessageQueue auditMessageQueue;

or a constructor annotation:

    private final RecordingAuditMessageQueue auditMessageQueue;

    @Autowired
    public MyClass(RecordingAuditMessageQueue auditMessageQueue) {
        this.auditMessageQueue = auditMessageQueue;
    }


After that, you can access recorded messages as

    List<AuditMessage> auditMessages = auditMessageQueue.getMessages();

Best regards
Dmytro


--
You received this message because you are subscribed to the Google Groups "ipf-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ipf-user+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ipf-user/5368a9c5-0da8-434e-a25b-1c1f3a4b9260n%40googlegroups.com.
Message has been deleted

Bo Vane

unread,
Jun 9, 2024, 9:48:46 AM6/9/24
to ipf-user

Bo Vane
20:49 (现在) 
收件人 ipf-user
Hi Dmytro
Thank you so much for your help. By looking at the IPF documentation, I have understood how to add additional parameters to the endpoint. However, I still have some questions regarding the second issue. In July this year, I need to participate in the 2024 China IHE evaluation scenarios, which involve XDS scenarios. I plan to directly use the XDS tutorial you provided (in my understanding, the Groovy code you provided is for the server side) and integrate it into a Spring Boot project. I need to write the corresponding client-side code in Java. For example, for the xds-iti41 transaction, I need to use the tools provided by IPF to assemble the data sent from the web frontend into a ProvideAndRegisterDocumentSet and send the message to another server through the underlying sending mechanism of the IPF framework. Is my understanding correct?

Returning to the second issue, I have already configured RecordingAuditMessageQueue in the Audit Context. However, I don't quite understand the meaning of "The same bean shall be then wired into your business logic/unit test -- using either a field annotation" that you mentioned. I run Server.groovy directly to start the XDS service, then I use SOAP UI to ProvideAndRegisterDocument, successfully registering and storing documents and being able to query them. Next, I want to access RecordingAuditMessageQueue. Currently, I don't have any business logic, so I randomly created a class and, following your method, tried to print the audit information inside auditMessages but encountered a NullPointerException. My code is as follows:

@Service
@Slf4j
public class TestService {
@Autowired
private RecordingAuditMessageQueue auditMessageQueue;
public void testRecordingAudit() {
List<AuditMessage> auditMessages = auditMessageQueue.getMessages(); // NULL pointer 
auditMessages.forEach(audit -> log.info(audit.toString()));
}

public static void main(String[] args) {
TestService testService = new TestService();
testService.testRecordingAudit();
}
}

Audit Context

<!-- Auditing -->
<bean id="auditContext" class="org.openehealth.ipf.commons.audit.DefaultAuditContext">
<property name="auditEnabled" value="true"/>
<property name="auditSourceId" value="sourceId"/>
<property name="auditMessageQueue" ref="mockedSender"/>
<!-- default
<property name="auditRepositoryHost" value="localhost"/>
<property name="auditRepositoryPort" value="514"/>
<property name="auditRepositoryTransport" value="UDP"/>
-->
</bean>

<bean id="mockedSender" class="org.openehealth.ipf.commons.audit.queue.RecordingAuditMessageQueue"/>
<!-- <bean id="mockedSender" class="org.openehealth.ipf.commons.audit.queue.LoggingAuditMessageQueue"/>-->

Is my approach incorrect?

the error infos
Exception in thread "main" java.lang.NullPointerException
at work.mediway.ihe.TestService.testRecordingAudit(TestService.java:21)
at work.mediway.ihe.TestService.main(TestService.java:27)

Best regards
Bo 😊😊

Dmytro Rud

unread,
Jun 9, 2024, 10:04:36 AM6/9/24
to ipf-...@googlegroups.com
You instantiate the TestService manually, therefore Spring wiring mechanisms do not work.  Let Spring instantiate the TestService -- define it as a bean in the Spring context XML file, and change the method main() as follows:

ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("context.xml");    // suppose that "context.xml" is the name of your Spring context XML file
try {
    Thread.currentThread().join();
} finally {
    // ...
}

, or switch to Spring Boot.


Message has been deleted

Bo Vane

unread,
Jun 10, 2024, 7:24:33 AM6/10/24
to ipf-user
Hello Dmytro
I understand what you mean now, and I have decided to refactor the project into a Spring Boot project. So, for the XDS tutorial project you provided, can I refactor it to start as a Spring Boot project? If possible, what should I pay attention to?

In order to integrate the XDS tutorial into Spring Boot, I made the following attempts:
First, I tried to start the XDS tutorial in a Spring Boot manner, so I converted the Beans configured in the context.xml to Java configuration.
My configuration class is as follows:

import org.apache.camel.spring.SpringCamelContext;
import org.openehealth.ipf.commons.audit.DefaultAuditContext;
import org.openehealth.ipf.commons.audit.queue.RecordingAuditMessageQueue;
import org.openehealth.ipf.commons.ihe.ws.cxf.payload.InPayloadLoggerInterceptor;
import org.openehealth.ipf.commons.ihe.ws.cxf.payload.OutPayloadLoggerInterceptor;
import org.openehealth.ipf.tutorials.xds.Iti18RouteBuilder;
import org.openehealth.ipf.tutorials.xds.Iti4142RouteBuilder;
import org.openehealth.ipf.tutorials.xds.Iti43RouteBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class XdsCamelContextConfig {
@Bean
public DefaultAuditContext auditContext(RecordingAuditMessageQueue mockedSender) {
DefaultAuditContext auditContext = new DefaultAuditContext();
auditContext.setAuditEnabled(true);
auditContext.setAuditSourceId("sourceId");
auditContext.setAuditMessageQueue(mockedSender);
return auditContext;
}

@Bean
public RecordingAuditMessageQueue mockedSender() {
return new RecordingAuditMessageQueue();
}

@Bean
public Iti4142RouteBuilder iti4142RouteBuilder() {
return new Iti4142RouteBuilder();
}

@Bean
public Iti43RouteBuilder iti43RouteBuilder() {
return new Iti43RouteBuilder();
}

@Bean
public Iti18RouteBuilder iti18RouteBuilder() {
return new Iti18RouteBuilder();
}

@Bean
public String logFileNamePrefix() {
return "/Users/bovane/Documents/hos-app/logs";
}
@Bean
public InPayloadLoggerInterceptor serverInLogger() {
return new InPayloadLoggerInterceptor("/Users/bovane/Documents/hos-app/logs/server-in.txt");
}

@Bean
public OutPayloadLoggerInterceptor serverOutLogger() {
return new OutPayloadLoggerInterceptor("/Users/bovane/Documents/hos-app/logs/server-out.txt");
}

@Bean
public SpringCamelContext camelContext() {
return new SpringCamelContext();
}
}

Next, I directly started the XDSApplication, and its output shows that the routes written in the XDS tutorial have been started. However, when I tested using SOAP UI, I encountered a 404 error. For example, when I sent a request to http://localhost:9091/xds-iti41, it returned a 404 error. I am not sure what the reason is. (When I directly run Server.groovy, the same request can successfully register documents.) What should I do next to make modifications? I hope you can give me some advice. Thank you very much for your help.

=====================================================
Picked up _JAVA_OPTIONS: -Djavax.xml.accessExternalSchema=all

. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.2.RELEASE)

2024-06-10 19:08:46.106 INFO 4124 --- [ main] work.mediway.ihe.XDSApplication : Starting XDSApplication on MacPro with PID 4124 (/Users/bovane/Documents/GitHub/ihe-base/ihe-xds/target/classes started by bovane in /Users/bovane/Documents/GitHub/ihe-base)
2024-06-10 19:08:46.109 INFO 4124 --- [ main] work.mediway.ihe.XDSApplication : No active profile set, falling back to default profiles: default
2024-06-10 19:08:46.357 INFO 4124 --- [ main] o.o.i.c.c.config.ExtensionModuleFactory : Registering new extension module RegRepModelExtension defined in class org.openehealth.ipf.tutorials.xds.RegRepModelExtension
2024-06-10 19:08:46.403 INFO 4124 --- [ main] o.o.i.c.c.config.ExtensionModuleFactory : Registering new extension module MappingExtension defined in class org.openehealth.ipf.commons.map.extend.MappingExtensionModule
2024-06-10 19:08:46.405 INFO 4124 --- [ main] o.o.i.c.c.config.ExtensionModuleFactory : Registering new extension module Hl7MarshalExtension defined in class org.openehealth.ipf.platform.camel.hl7.extend.Hl7ExtensionModule
2024-06-10 19:08:46.408 INFO 4124 --- [ main] o.o.i.c.c.config.ExtensionModuleFactory : Registering new extension module Hl7Extension defined in class org.openehealth.ipf.modules.hl7.extend.Hl7ExtensionModule,org.openehealth.ipf.modules.hl7.extend.Hl7Dsl2ExtensionModule
2024-06-10 19:08:46.431 INFO 4124 --- [ main] o.o.i.c.c.config.ExtensionModuleFactory : Registering new extension module CoreExtension defined in class org.openehealth.ipf.platform.camel.core.extend.CoreExtensionModule
2024-06-10 19:08:47.437 INFO 4124 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9091 (http)
2024-06-10 19:08:47.445 INFO 4124 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2024-06-10 19:08:47.445 INFO 4124 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
2024-06-10 19:08:47.554 INFO 4124 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2024-06-10 19:08:47.554 INFO 4124 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1019 ms
2024-06-10 19:08:48.618 INFO 4124 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator'
2024-06-10 19:08:48.702 INFO 4124 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9091 (http) with context path ''
2024-06-10 19:08:49.323 INFO 4124 --- [ main] o.a.c.w.s.f.ReflectionServiceFactoryBean : Creating Service {urn:ihe:iti:xds-b:2007}DocumentRepository_Service from WSDL: wsdl/iti41.wsdl
2024-06-10 19:08:49.764 INFO 4124 --- [ main] org.apache.cxf.endpoint.ServerImpl : Setting the server's publish address to be /xds-iti41
2024-06-10 19:08:49.782 INFO 4124 --- [ main] o.a.c.w.s.f.ReflectionServiceFactoryBean : Creating Service {urn:ihe:iti:xds-b:2007}DocumentRegistry_Service from WSDL: wsdl/iti42.wsdl
2024-06-10 19:08:49.835 INFO 4124 --- [ main] org.apache.cxf.endpoint.ServerImpl : Setting the server's publish address to be /xds-iti42
2024-06-10 19:08:49.843 INFO 4124 --- [ main] o.a.c.w.s.f.ReflectionServiceFactoryBean : Creating Service {urn:ihe:iti:xds-b:2007}DocumentRegistry_Service from WSDL: wsdl/iti18.wsdl
2024-06-10 19:08:49.861 INFO 4124 --- [ main] org.apache.cxf.endpoint.ServerImpl : Setting the server's publish address to be /xds-iti18
2024-06-10 19:08:49.862 INFO 4124 --- [ main] o.a.c.w.s.f.ReflectionServiceFactoryBean : Creating Service {urn:ihe:iti:xds-b:2007}DocumentRepository_Service from WSDL: wsdl/iti43.wsdl
2024-06-10 19:08:49.908 INFO 4124 --- [ main] org.apache.cxf.endpoint.ServerImpl : Setting the server's publish address to be /xds-iti43
2024-06-10 19:08:49.909 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Apache Camel 3.21.3 (camel-1) is starting
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Routes startup (started:34)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route1 (xds-iti41://xds-iti41)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route2 (xds-iti42://xds-iti42)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route3 (direct://checkForAssociationToDeprecatedObject)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route4 (direct://checkPatientIds)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route5 (direct://checkHashAndSize)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route6 (direct://checkHash)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route7 (direct://makeDocsReReadable)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route8 (direct://storeDocs)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route9 (direct://updateDocEntriesFromProvide)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route10 (direct://storeDocEntriesFromRegister)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route11 (direct://storeFolders)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route12 (direct://storeSubmissionSet)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route13 (direct://store)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route14 (direct://storeAssociations)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route15 (direct://checkReplace)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route16 (direct://copyFolderMembership)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route17 (direct://deprecateTargetDocs)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route18 (direct://deprecateDocEntry)
2024-06-10 19:08:50.199 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route19 (direct://updateTime)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route20 (xds-iti18://xds-iti18)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route21 (direct://convertToObjRefs)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route22 (direct://findDocs)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route23 (direct://findSets)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route24 (direct://findFolders)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route25 (direct://getDocs)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route26 (direct://getFolders)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route27 (direct://getDocsAndAssocs)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route28 (direct://getFoldersForDoc)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route29 (direct://getRelatedDocs)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route30 (direct://getSets)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route31 (direct://getAssocs)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route32 (direct://getFolderAndContents)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route33 (direct://getSetAndContents)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started route34 (xds-iti43://xds-iti43)
2024-06-10 19:08:50.200 INFO 4124 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Apache Camel 3.21.3 (camel-1) started in 1s181ms (build:17ms init:874ms start:290ms)
2024-06-10 19:08:50.202 INFO 4124 --- [ main] o.o.i.commons.core.config.ContextFacade : Re-initializing the registry
2024-06-10 19:08:50.202 INFO 4124 --- [ main] c.s.c.c.SpringConfigurationPostProcessor : Number of extension beans: 1
2024-06-10 19:08:50.214 INFO 4124 --- [ main] work.mediway.ihe.XDSApplication : Started XDSApplication in 4.471 seconds (JVM running for 5.255)
2024-06-10 19:08:50.382 INFO 4124 --- [)-192.168.1.198] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-06-10 19:08:50.395 INFO 4124 --- [)-192.168.1.198] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2024-06-10 19:08:50.397 INFO 4124 --- [)-192.168.1.198] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms

Best regards
Bo

Dmytro Rud

unread,
Jun 10, 2024, 8:26:22 AM6/10/24
to ipf-...@googlegroups.com
Did you add dependencies to corresponding IPF starters to your pom.xml?

<dependency>
    <groupId>org.openehealth.ipf.boot</groupId>
    <artifactId>ipf-atna-spring-boot-starter</artifactId>
    <version>${ipf-version}</version>
</dependency>
<dependency>
    <groupId>org.openehealth.ipf.boot</groupId>
    <artifactId>ipf-xds-spring-boot-starter</artifactId>
    <version>${ipf-version}</version>
</dependency>


Message has been deleted
Message has been deleted

Bo Vane

unread,
Jun 10, 2024, 10:37:40 AM6/10/24
to ipf-user
Yes
My full pom.xml are as follows

If there are errors in my pom dependencies, could you help me fix them? Thank you very much.
==============
parent pom.xml 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/>
</parent>
<groupId>work.mediway.ihe</groupId>
<artifactId>ihe-base</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>ihe-xds</module>
<module>ihe-ct</module>
</modules>

<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hutool.version>5.8.12</hutool.version>
<lombok.version>1.18.20</lombok.version>
<javax.version>1.3.2</javax.version>
</properties>

<dependencies>
<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>

<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>${javax.version}</version>
</dependency>
</dependencies>

</project>

XDS module pom.xml 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>work.mediway.ihe</groupId>
<artifactId>ihe-base</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

<artifactId>ihe-xds</artifactId>

<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<ipf.version>4.8-m5</ipf.version>
<camel-version>3.21.3</camel-version>
<groovy.version>3.0.8</groovy.version>
</properties>
<!-- IPF 框架依赖管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.openehealth.ipf</groupId>
<artifactId>ipf-dependencies</artifactId>
<type>pom</type>
<scope>import</scope>
<version>${ipf.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<!-- common -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>

<!-- SpringBoot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>


<!-- IPF -->
<dependency>
<groupId>org.openehealth.ipf.boot</groupId>
<artifactId>ipf-atna-spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.openehealth.ipf.boot</groupId>
<artifactId>ipf-xds-spring-boot-starter</artifactId>
</dependency>


<dependency>
<groupId>org.openehealth.ipf.commons</groupId>
<artifactId>ipf-commons-ihe-xds</artifactId>
<classifier>tests</classifier>
<version>${ipf.version}</version>
</dependency>


<!-- some test-jar for xds -->
<dependency>
<groupId>org.openehealth.ipf.platform-camel</groupId>
<artifactId>ipf-platform-camel-ihe-xds</artifactId>
<version>${ipf.version}</version>
<type>test-jar</type>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>org.openehealth.ipf.platform-camel</groupId>
<artifactId>ipf-platform-camel-ihe-ws</artifactId>
<version>${ipf.version}</version>
<type>test-jar</type>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>org.openehealth.ipf.commons</groupId>
<artifactId>ipf-commons-ihe-ws</artifactId>
<version>${ipf.version}</version>
<type>test-jar</type>
</dependency>

<!-- Groovy -->

<!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>${groovy.version}</version>
</dependency>

<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-groovy</artifactId>
<version>${camel-version}</version>
</dependency>

<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<version>${camel-version}</version>
</dependency>

<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-xml</artifactId>
<version>${camel-version}</version>
</dependency>

<!-- Dependencies for test -->
<dependency>
<groupId>org.openehealth.ipf.commons</groupId>
<artifactId>ipf-commons-ihe-xds</artifactId>
<version>${ipf.version}</version>
<type>test-jar</type>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>org.openehealth.ipf.commons</groupId>
<artifactId>ipf-commons-ihe-core</artifactId>
<version>${ipf.version}</version>
<type>test-jar</type>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
</dependency>

</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
<!--
Add build-info.properties to generated artifact
https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/howto-build.html#howto-build-info
-->
<executions>
<execution>
<goals>
<goal>build-info</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>

Bo Vane

unread,
Jun 10, 2024, 10:56:04 AM6/10/24
to ipf-user
My repository code address is https://github.com/bovane/ihe-base.git. The corresponding branch is dev-boot. If possible, could you please help take a look at the code? I can't find the startup route information.
Reply all
Reply to author
Forward
0 new messages