mkdir OSGiAngularInteraction
cd OSGiAngularInteraction
groovy
plugins {
id 'java'
id 'osgi'
}
apply plugin: 'application'
repositories {
jcenter()
}
dependencies {
implementation 'org.osgi:osgi.annotation:8.0.0'
implementation 'org.osgi:osgi.cmpn:8.0.0'
implementation 'org.osgi:org.osgi.service.component.annotations:1.4.0'
implementation 'org.osgi:org.osgi.service.component.runtime:1.0.6'
compileOnly 'javax.annotation:javax.annotation-api:1.3.2'
compileOnly 'javax.servlet:javax.servlet-api:3.1.0'
}
osgi {
instruction 'Include-Resource', 'src/main/resources'
instruction 'Private-Package', 'com.example.osgi.angular.interaction'
}
application {
mainClassName = 'com.example.osgi.angular.interaction.Main'
}
package com.example.osgi.angular.interaction;
import org.osgi.service.component.annotations.Component;
@Component(property = { "osgi.command.scope=angular", "osgi.command.function=hello" })
public class Main {
public void hello() {
System.out.println("Hello from OSGi!");
}
}
html
<!DOCTYPE html>
<html>
<head>
<title>OSGi Angular Interaction</title>
</head>
<body>
<h1>OSGi Angular Interaction</h1>
<button onclick="helloFromOSGi()">Hello from OSGi</button>
<script>
function helloFromOSGi() {
console.log('Calling OSGi...');
java.com.example.osgi.angular.interaction.Main.hello();
}
</script>
</body>
</html>
./gradlew installApp
./build/install/OSGiAngularInteraction/bin/OSGiAngularInteraction