Install component's IDL
Create component
Code Block |
---|
|
cd ~/workspace
getTemplateForDirectory MODROOT_WS jHelloComp
cd jHelloComp/src
mkdir -p acsws/workshop/HelloComponentImpl
touch acsws/workshop/HelloComponentImpl/HelloComponentImpl.java
cp ../../idlHelloComp/src/acsws/workshop/HelloComponentImpl/HelloComponentComponentHelper.java.tpl acsws/workshop/HelloComponentImpl/HelloComponentComponentHelper.java
vim Makefile |
We modify the Makefile for this component:
Code Block |
---|
language | bash |
---|
title | jHelloComp/src/Makefile |
---|
|
...
JARFILES = HelloComponentImpl
HelloComponentImpl_DIRS = acsws
... |
We fill the component code as follows:
Code Block |
---|
|
vim acsws/workshop/HelloComponentImpl/HelloComponentImpl.java |
Code Block |
---|
language | java |
---|
title | jHelloComp/src/acsws/workshop/HelloComponentImpl/HelloComponentImpl.java |
---|
|
//Suggested: import alma.<Module>.<Interface>Impl; //But anything, really
package acsws.workshop.HelloComponentImpl;
//Base component implementation, including container services and component lifecycle infrastructure
import alma.acs.component.ComponentImplBase;
//Skeleton interface for server implementation
import acsws.workshop.HelloComponentOperations;
//ClassName usually is <Interface>Impl, but can be anything
public class HelloComponentImpl extends ComponentImplBase implements HelloComponentOperations {
public HelloComponentImpl() {
}
public String printHello() {
System.out.println("Just printing 'Hello World!'");
return new String("Hello World!");
}
} |
Compile component
Code Block |
---|
|
make all install |
Add component to CDB
Code Block |
---|
|
vim $ACS_CDB/CDB/MACI/Components/Components.xml |
Add the following item:
Code Block |
---|
language | bash |
---|
title | Components.xml |
---|
|
<e Name="HelloWorldJava"
Code="acsws.workshop.HelloComponentImpl.HelloComponentComponentHelper"
Type="IDL:acsws/workshop/HelloComponent:1.0"
Container="frodoContainer" ImplLang="java" /> |
Check component helper
Check ~/workspace/jHelloComp/src/acsws/workshop/HelloComponentImpl directory. There should be two files:
Code Block |
---|
|
`-- HelloComponentImpl
|-- HelloComponentComponentHelper.java
`-- HelloComponentImpl.java |
If no helper file is found, copy it from the IDL directory
Code Block |
---|
|
cp ~/workspace/idlHelloComp/src/acsws/workshop/HelloComponentImpl/HelloComponentComponentHelper.java.tpl ~/workspace/jHelloComp/src/acsws/workshop/HelloComponentImpl/HelloComponentComponentHelper.java |
Testing
Create client python file:
Code Block |
---|
|
cd ~/workspace
touch client.py
vim client.py |
We fill it as follow:
Code Block |
---|
language | py |
---|
title | ~/workspace/client.py |
---|
|
from Acspy.Clients.SimpleClient import PySimpleClient
client = PySimpleClient()
component = client.getComponent("HelloWorldJava")
print(component.printHello()) |
Run component:
Code Block |
---|
|
# in one terminal
acsStop
acsStart
# in a different terminal
acsStartContainer -java frodoContainer
# in a different terminal
python client.py |
Example output:
Code Block |
---|
...
Hello World!
... |