OSGI Framework Knopflerfish

Status
Nicht offen für weitere Antworten.

Sindbad1983

Top Contributor
Hallo zusammen!

Nach erfolgreichem Abschluss der Programmier-LVA besuch ich jetzt schon den nächsten Kurs..
danke nochmal für eure tatkräftige Unterstützung!
Ohne java-forum.de hätt ich das wahrscheinlich nicht geschafft!

dieses Mal wartet echt eine sehr schwere Aufgabe auf mich!


Bin ich da richtig bei euch, wenn es ums Thema OSGI geht?
(Open Service Gateway Initiative)



Kennt sich damit jemand aus bzw. hat sich schon mal jemand damit beschäftigt?
Wir müssen alles in Java programmieren.

also OSGI ist ein Framework, das in Knopflerfish implementiert ist..

Tommy
 

Sindbad1983

Top Contributor
naja...das lässt sich ehrlich gesagt ein bissl schwer erklären...



da gibt es ein Programm, welche Regeln erstellt:
man gibt als User Bedingungen an und das Programm führt dann Aktionen aus!

z.B.:

man kann beliebige Inputwerte festlegen:
length (int) >0
width (int) <10


und dann kann man sagen, was er berechnen soll(er soll eine Aktion ausführen)

area=length*width
also das ist die Aktion




und dann geht ein Fenster auf, in dem man das eben testen kann:


dann gibt man Werte für l und w ein, also

length=5
width=5

und er berechnet die Area mit 25


ist ganz simpel an und für sich...

soetwas ist 1 (!) Regelwerk, ok?

jetzt kann man in diesem Programm unbegrenzt viele verschiedene Regelwerke anlegen.

Dieses Programm, das letztes JAhr entwickelt wurde, wurde ein eigenes Compiler eingebaut, der aus dem Regelwerk ein JAVA-File generiert..also das steht in etwas drinnen, wie die Auswertung statt gefunden hat:

hier ein kleiner Einblick:

also dieses JAVA-File ist eigentlich der Ausgangspunkt für meine Aufgabenstellung:


Code:
import se.g2.blm.runtime.LOCK;
import se.g2.blm.runtime.JRuleSet;

 public class RWTest_RuleSetTest2 extends JRuleSet {

   /* Input values */
   public float length;
   public float width;

   /* Output values */
   public float area;

   /* Constructor */
   public RWTest_RuleSetTest2(float length, float width, boolean isInterpretative, boolean isMain) {
       this.length = length;
       this.width = width;
       this.isInterpretative = isInterpretative;
       this.isMain = isMain;
      }

   /* Starting point for processing rule set. */
   public JRuleSet execute() {
       if((length>0) && (width<10)) {
          rule_id = 0;
          action_1();
         }
       else  {
          rule_id = 1;
         }
       if(isMain) { 
          synchronized(LOCK.getLock()) { 
             try {
                LOCK.getLock().notifyAll();
               }
             catch(Exception exception) {
               }
             if(Thread.currentThread() instanceof se.g2.blm.runtime.RuleSetRuntime.JRuleSetExecutor) {
                ((se.g2.blm.runtime.RuleSetRuntime.JRuleSetExecutor)Thread.currentThread()).finished = true;
               }
             return this;
            }
         }
       return this;
      }

   public void action_1() {
       area=length*width;
      }

   public boolean processBreakPoint() { 
       synchronized(LOCK.getLock()) { 
          try {
             LOCK.getLock().notifyAll();
             LOCK.getLock().wait();
            }
          catch(Exception exception) {
            }
          return canContinue;
         }
      }

   public String toString() { 
       StringBuffer buffer = new StringBuffer();
       buffer.append("RULE: ").append(getRuleId() + 1).append("\n\n");
       buffer.append("INPUT:\n");
       buffer.append("length: ").append(length).append('\n');
       buffer.append("width: ").append(width).append('\n');
       buffer.append('\n');
       buffer.append("OUTPUT:\n");
       buffer.append("area: ").append(area).append('\n');
       return buffer.toString();
      }
  }

Die Klasse erbt von JRuleSet, das ist auch wichtig..die kann ich bei Bedarf noch reinstellen
JRuleSet ist ein abstrakte Klasse, von der eben alle erstellten Regelwerke erben...

Wichtig ist noch, dass eben verschiedene Regelwerke angelegt werden können...aber jedes Regelwerk für sich allein soll in ein Bundle kommen, ok?

UNSERE Aufgabe ist nun:

wir müssen jedes Regelwerk so erweitern, dass es in einem Bundle gespeichert wird und dann in Knopflerfish installiert werden kann!
Außerdem sollen über das Bundle verschiedene Informationen abgefragt werden könnnen, wie z.B.
wer hat es installiert, wie oft wurde es schon installiert, über welchen Zeitraum war es installiert etc.

Ich hoff, ich hab das jetzt nicht zu verwirrend erklärt...


Die Frage, die sich jetzt stellt ist, wie man das hinkriegt, dass man das JAVA-File, das vom jeweiligen Compiler kompiliert wird, so erweitert, dass daraus ein Bundle wird...


kann mir da jetzt jemand folgen?
soll ich noch detaillierte Informationen darüber geben?

Möchte mir jemand helfen?

Ich weiß, das klingt jetzt alles verwirrend, aber ich wär wie gesagt echt dankbar, wenn mir da jemand ein paar Tipps geben könnte..
 
G

Gast

Gast
Hi!

studierst du in der uni oder machst du grad eine Ausbildung wenn ich fragen darf??

Ich versteht deine Aufgaben auch nicht ganz richtig....

OSGi ist nicht schwer. Du hast bestimmt das Prinzip von OSGi verstanden.

So, Bundles kann man bequem über Eclipse erstellen. Du brauchst das Knopflerfish-Plugin.

Zu sind all deine Programm Bundles. Bundles sind jar Files die du über das Framework dynamisch laden kannst.

Dein Servicenutzer muss sich beim Serviceanbieter über einen "Tracker" ansprechen und die bereitgestellten Interfaces nutzen.

Dazu muss noch für je einen Bundle einen "Activator" schreiben...
 

Sindbad1983

Top Contributor
...Uni

naja...es gibt nur um ein Java-File, das automatisch dann so erweitert werden muss, dass es zu einem Bundle wird...
 
G

Gast

Gast
Schreib mal das File hier hin dann zeigt dir dann wie man es erweitert und daraus ein bundle macht....
 

Sindbad1983

Top Contributor
ok...also nochmal ganz kurz zur Erklärung:


irgendein Programm (nicht wichtig für dich) erstellt verschiedene Regelwerke, d.h. man gibt Inputwerte rein und bekommt irgendwelche Outputwerte raus!
Der interne Compiler dieses Programms generiert dann folgenden Code:

diesen Code müssen wir hernehmen(also pro Regelwerk wird so ein Code generiert) und in ein Bundle verpacken!

Das heißt 1 Bundle enthält 1 Regelwerk

der vom internen Compiler generierte Code schaut folgendermaßen aus
hier beispielhaft für Regelwerk1 mit den Inputwerten length und width und den Outputwert area (es soll die Fläche berechnet werden):


Code:
public class Regelwerk1 extends JRuleSet {

   /* Input values */
   public float length;
   public float width;

   /* Output values */
   public float area;

   /* Constructor */
   public Regelwerk1(float length, float width, boolean isInterpretative, boolean isMain) {
       this.length = length;
       this.width = width;
       this.isInterpretative = isInterpretative;
       this.isMain = isMain;
      }

   /* Starting point for processing rule set. */
   public JRuleSet execute() {
       if((length>0) && (width<10)) {
          rule_id = 0;
          action_1();
         }
       else  {
          rule_id = 1;
         }
       if(isMain) { 
          synchronized(LOCK.getLock()) { 
             try {
                LOCK.getLock().notifyAll();
               }
             catch(Exception exception) {
               }
             
             return this;
            }
         }
       return this;
      }

   public void action_1() {
       area=length*width;
      }

   
    //Ausgabe
   public String toString() { 
       StringBuffer buffer = new StringBuffer();
       buffer.append("RULE: ").append(getRuleId() + 1).append("\n\n");
       buffer.append("INPUT:\n");
       buffer.append("length: ").append(length).append('\n');
       buffer.append("width: ").append(width).append('\n');
       buffer.append('\n');
       buffer.append("OUTPUT:\n");
       buffer.append("area: ").append(area).append('\n');
       return buffer.toString();
      }
  }

alle Regelwerke erben von der Klasse JRuleSet, die folgendermaßen aussieht(ist nur abstrakte Klasse)

Code:
public abstract class JRuleSet {
	   /* Instance variables */
	   protected boolean isInterpretative; // if true, don't skip the breakpoints
	   protected boolean canContinue = true; // if true, return after breakpoint
	   protected int rule_id; // holds the id of the rule,  which is beeing executed
	   protected boolean isMain = false; // this variable is false, if the RuleSet beeing executed is triggered from other RuleSet.
	   
	   
	   public abstract JRuleSet execute();   
	   
	  
	   public void setContinue(boolean canContinue) {
	      this.canContinue = canContinue;
	     }
	
	   public boolean isInterpretative() {
	      return isInterpretative;
	     }	 
		
	   public int getRuleId() {
	      return rule_id;
		 }
	
	   public boolean isMain() {
	      return isMain;
	     }	 
	  }


das heißt : jedes Bundle(das jeweils nur 1 Regelwerk enthält) wird wohl folgendes enthalten müssen:

1. java-File des jeweiligen Regelwerkes (hier Regelwerk1 )
2. java-File der Klasse JRuleSet
3. irgendeine Activator-Klasse mit start und stop, die das Regelwerk in der Registry registiert oder so...
4. Manifest-Datei

stimmt das?

weißt du ungefähr was ich meine?

am Schluss soll dann das ganze automatisch in eine jar-Datei umgewandelt werden, damit es im Knopflerfish lauffähig ist..

vielleicht kannst du mir ein paar Tipps bzw. Ansätze geben..
ich wär dir echt sehr sehr dankbar!


PS: Das ist nur ein sehr kleiner Teil unserer gesamten Aufgabe in diesem PRojekt... ist ne MEnge Arbeit! :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Probleme mit dem OSGi-Framework Plattformprogrammierung 3
D OSGi JSR296 (Swing Application Framework) - Konzeptionsfrage Plattformprogrammierung 2
F OSGi und root rechte Plattformprogrammierung 2
Z MySQL-Treiber in RAP-Anwendung für Jetty im OSGI- Equinox- Maven-Dschungel Plattformprogrammierung 0
Shams Antbuild - Problem bei OSGi Anfängertutorial Plattformprogrammierung 0
T OSGi OSGI bundle bauen org.apache.xerces Plattformprogrammierung 3
G OSGi Bundle-ClassPath Plattformprogrammierung 3
P OSGi registerService Plattformprogrammierung 3
H OSGi OSGi + Logback + slf4j - Eclipse Run Configuration Plattformprogrammierung 7
G OSGI bundleChanged Plattformprogrammierung 2
E OSGi Equinox HttpService only supports servlet 2.1 specification. Plattformprogrammierung 2
S OSGi Declarative Service Cardinality Plattformprogrammierung 6
Kr0e OSGI - Anfängerfragen Plattformprogrammierung 3
K OSGi Verteilte Anwendung? Plattformprogrammierung 9
B OSGi Einsteiger OSGi-Applikation Plattformprogrammierung 9
S (OSGI - EQUINOX) Welche Eclipse IDE? Plattformprogrammierung 3
N OSGi: Ressourcen gezielt aus bestimmten Modulen laden? Plattformprogrammierung 4
borobudur OSGi OSGi Blueprint Integrationstests Plattformprogrammierung 6
S OSGi Filter Syntax Plattformprogrammierung 2
N OSGi Dependency Loading Plattformprogrammierung 2
S OSGi Bibliothek für alle Plattformprogrammierung 5
H OSGI mit Eclipse und Maven Plattformprogrammierung 5
X OSGi Splash ohne product Plattformprogrammierung 2
G OSGi: Service registrieren Plattformprogrammierung 2
lumo OSGI Service - ServiceReference Plattformprogrammierung 3
G [osgi] bundle spezifische properties Plattformprogrammierung 5
DEvent [osgi] Services implementieren Plattformprogrammierung 2
C RCP Applikation starten als OSGi Bundle Plattformprogrammierung 2
B equinox OSGi EclipseStarter.startup NullPointerException Plattformprogrammierung 3
B OSGi, Euqinox, innherhalb vom Bundle Pfad des zugehörigen jar-files ermitteln Plattformprogrammierung 6
B OSGi, Equinox, Exceptions werden "ignoriert" Plattformprogrammierung 21
C OSGi, Hibernate und welche Datenbank? Plattformprogrammierung 4
astralarse Custom OSGi Launcher mit config.ini Plattformprogrammierung 6
C Eclipse - Externe OSGi bundles adden Plattformprogrammierung 7
F OSGi Anwendungsdesign Plattformprogrammierung 3
N OSGI in Netbeans? Plattformprogrammierung 5
X OSGi und RCP Plattformprogrammierung 15
C OSGi shutdown Plattformprogrammierung 4
D Problem mit Synth Painter und OSGi (Equinox) Plattformprogrammierung 8
G Osgi Plattformprogrammierung 5
A Plugin konzepte: OSGI oder JPF? Plattformprogrammierung 5
B Zurück zum Desktop, aber welches Framework? Plattformprogrammierung 7
E Common Navigator Framework erste Knoten werden nicht angezeigt Plattformprogrammierung 4
G EMF und Notification Framework Plattformprogrammierung 39
R Framework zur Erstellung Java-Desktop-Anwendungen Plattformprogrammierung 14
hdi Schwierigkeiten mit Plugin für EPF (Eclipse Process Framework) Plattformprogrammierung 3
G Eclipse Modelling Framework - Java Code aus Model erzeugen. Plattformprogrammierung 2
dzim Common Navigator Framework Plattformprogrammierung 14

Ähnliche Java Themen


Oben