diff --git a/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/interceptors/JDBCStatementInterceptor.java b/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/interceptors/JDBCStatementInterceptor.java
index e575409c3151695334afede7bd1cc89c5d2cc368..6a16e81f910518b984b9a8f92e16809f9a12a273 100644
--- a/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/interceptors/JDBCStatementInterceptor.java
+++ b/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/interceptors/JDBCStatementInterceptor.java
@@ -94,13 +94,17 @@ public class JDBCStatementInterceptor implements StatementInterceptorV2 {
 		InvocationRecord currentInvocation = threadCallStack.peek();
 		if (currentInvocation != null) {
 			String interf = "javax.sql.DataSource";
-			String operation = "query";
 			
+			StringBuilder operation = new StringBuilder();
+			operation.append("query(");
+			operation.append(currentInvocation.toString());
+			operation.append(")");
+
 			ComponentRecord crec = MonitoringService.INSTANCE.requireComponent(con.getHost(),
 					"mysql", "", "database");
 			crec.setComponentClass("javax.sql.DataSource");
 			OperationRecord orec = currentInvocation.requireEndpoint(crec, interf, "jdbc",
-					operation);
+					operation.toString());
 			
 			threadCallStack.push(orec.startInvocation());
 			
diff --git a/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/service/ModelExtractionService.java b/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/service/ModelExtractionService.java
index 5a8f64a4334359c84f2b8f5cd211d7e133dbf3e1..5c0527b620b93145d081cf973404aa0eedbe8f91 100644
--- a/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/service/ModelExtractionService.java
+++ b/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/service/ModelExtractionService.java
@@ -449,6 +449,8 @@ public class ModelExtractionService extends AgentController implements Service<M
 				// required ProvidingDelegationConnector.
 				addLocalCallToModule((CompositeComponent) calledComponent, calledProvidingRole, outgoingCrec,
 						outgoingIrec);
+			} else if (outgoingIrec.getOperation().getProtocol().equals("jdbc")) {
+				addDataSource((CompositeComponent) calledComponent, calledProvidingRole, outgoingSignature);
 			}
 		}
 
@@ -684,6 +686,34 @@ public class ModelExtractionService extends AgentController implements Service<M
 		ModelSkeletonUtil.insert(module.getProvidingDelegationConnectors(), providingConnector);
 	}
 
+	// This creates a basic component that represents the component service for
+	// a database access
+	private void addDataSource(CompositeComponent dataSourceComponent, InterfaceProvidingRole role,
+			Signature signature) {
+		BasicComponent dataBaseComponent = RepositoryFactory.eINSTANCE.createBasicComponent();
+		dataBaseComponent.setName("database");
+		dataBaseComponent = ModelSkeletonUtil.insert(skeleton.getRepository().getComponents(), dataBaseComponent);
+
+		InterfaceProvidingRole innerProvidingRole = RepositoryFactory.eINSTANCE.createInterfaceProvidingRole();
+		innerProvidingRole.setInterface(role.getInterface());
+		innerProvidingRole.setName(toName("jdbc://javax.sql.DataSource"));
+		innerProvidingRole = ModelSkeletonUtil.insert(dataBaseComponent.getInterfaceProvidingRoles(),
+				innerProvidingRole);
+
+		AssemblyContext databaseContext = RepositoryFactory.eINSTANCE.createAssemblyContext();
+		databaseContext.setName("database");
+		databaseContext.setEncapsulatedComponent(dataBaseComponent);
+		databaseContext = ModelSkeletonUtil.insert(dataSourceComponent.getAssemblyContexts(), databaseContext);
+
+		ProvidingDelegationConnector delegation = RepositoryFactory.eINSTANCE.createProvidingDelegationConnector();
+		delegation.setAssemblyContext(databaseContext);
+		delegation.setInnerInterfaceProvidingRole(innerProvidingRole);
+		delegation.setOuterInterfaceProvidingRole(role);
+		ModelSkeletonUtil.insert(dataSourceComponent.getProvidingDelegationConnectors(), delegation);
+
+		createComponentInternalBehavior(dataBaseComponent, innerProvidingRole, signature);
+	}
+
 	private FineGrainedBehavior createComponentInternalBehavior(BasicComponent implementationComponent,
 			InterfaceProvidingRole implementationProvidingRole, Signature signature) {
 		FineGrainedBehavior behavior = ServicebehaviorFactory.eINSTANCE.createFineGrainedBehavior();