Lotus Notes / Domino Sonstiges > Companion Products
Sametime Plug-In für Domino-Zugriff
flaite:
in Manifest.mf
Bundle-ClassPath: ., Notes.jar
Hier fehlt bmorbapi.jar
Du solltest das im Runtime Reiter des Manifest Editors des Eclipse Plug-in Editors hinzufügen können.
Grüße nach Münster. Ist Bernd Jergus noch da?
muenzpraeger:
Hey!
Ich sag es ja nur ungern - aber das hat leider nicht funktioniert.
--- Zitat ---java.lang.NoClassDefFoundError: lotus.domino.Session
at java.lang.J9VMInternals.verifyImpl(Native Method)
at java.lang.J9VMInternals.verify(J9VMInternals.java:59)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:120)
at de.company.sametime.plugin.sendsms.SMSPlugin.getUserInput(SMSPlugin.java:35)
at de.company.sametime.plugin.sendsms.SMSPlugin.run(SMSPlugin.java:14)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:254)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:539)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3673)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1930)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1894)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:422)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at com.ibm.collaboration.realtime.ui.WorkbenchAdapter.createAndRunWorkbench(WorkbenchAdapter.java:103)
at com.ibm.collaboration.realtime.ui.WorkbenchAdapter.run(WorkbenchAdapter.java:85)
at com.ibm.collaboration.realtime.application.RTCApplication.run(RTCApplication.java:765)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at java.lang.reflect.AccessibleObject.invokeL(AccessibleObject.java:211)
at java.lang.reflect.Method.invoke(Method.java:272)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
--- Ende Zitat ---
Und ja - Bernd turnt hier noch rum... ;-)
flaite:
Du hast auch Notes.jar gar nicht im plug-in selbst drin!
Wie in .classpath steht referenzierst du das als external jar in das Projekt. Das kann auch nur beim kompilieren funktionieren und nicht in der Runtime.
--- Zitat ---<classpathentry kind="lib" path="C:/Programme/Notes/jvm/lib/ibmorbapi.jar"/>
<classpathentry kind="lib" path="C:/Programme/Notes/jvm/lib/ext/Notes.jar"/>
--- Ende Zitat ---
Ich hab mir eine zugegeben einfach RCP Anwendung zusammengeklickt aber Notes.jar in das Projekt reinimportiert (über File/Import/Filesystem) und zwar in die Root des Projekts.
Und dann im Runtime-Tab von plug-in xml über den Add Button das Notes.jar angemeldet.
s. Screenshot (da ist Notes.jar im Projekt)
Und dann ApplicationWorkbenchWindowAdvisor.preWindowOpen() ein bischen erweitert. Funktioniert wie erwartet. Als Fenstertitel steht da mein username in Notes.
--- Code: ---public void preWindowOpen() {
IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
configurer.setInitialSize(new Point(400, 300));
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);
configurer.setTitle("Hello RCP");
Session session = null;
try {
NotesThread.sinitThread();
session = NotesFactory.createSession();
configurer.setTitle(session.getCommonUserName());
} catch (NotesException e) {
e.printStackTrace();
} finally {
try {
if (session!=null) {
session.recycle();
}
}
catch(NotesException e1) {}
NotesThread.stermThread();
}
--- Ende Code ---
Die Gymnastik mit den ganzen try-catch-finally, recycle, stermThread ist btw. auch nicht als Joke da, sondern wichtig. Aber das nur am Rande.
Eigentlich solltest du später Notes.jar und ibmorbapi.jar in ein eigenes plug-in importieren und das über Dependencies/Required Plug-ins in allen Plug-ins anmelden, die das nutzen. Aber das ist der nächste Schritt. Vermutlich brauchst du dann noch ein Feature. Ist aber erst nicht so wichtig.
Grüß bitte Bernd von mir.
Axel
flaite:
Noch ein Hinweis: In den Tutorials wird es oft so dargestellt, dass Eclipse RCP/plugins ganz einfach, viel "einfacher" als Swing, etc. ist.
Um aber ein realistisches RCP Projekt durchzuführen, sind die folgenden Bücher sehr hilfreich:
McAffer, Lemieux, Eclipse Rich Client Platform und
Daum, Rich-Client Entwicklung mit Eclipse
Eclipse unterliegt nämlich schon
a) ein komplexes Objektmodell
b) eine ebenfalls komplexe, lose gekoppelte, nach OSGi gedrehte Runtime Plattform
McAffer, Lemieux ist besitzt Stärken als Einsteiger-Tutorial und Daum deckt ein weiteres Feld ab.
Ein in 3 großen und neuen Backsteingebäuden in münsteraner Seenähe untergebrachtes Unternehmen mit täglich ca. 15 unterschiedlichen Desserts zur Auswahl und einem okayen Salatbufet sollte diese Investition nicht schäuen ;) Weil nämlich vielleicht die Fi..... in Ka.......
Solidarische Grüße
Axel
flaite:
Der Artikel ist da. (http://lekkimworld.com/2007/05/24/new_the_view_article_is_out.html). Ich hab mir mal den SourceCode von der TheView Seite heruntergeladen.
A) com.lekkimworld.sametime.notes_api_installhandler -> beschäftigt sich mit Classpath Issues. Das arme plug-in wird im Grunde auf einen vollen rekursiven scan des Dateisystems geschickt. Ich kann mir ehrlichgesagt nicht vorstellen, dass es so kompliziert sein muß. In Eclipse RCP muß das nicht so sein (s. mein vorletztes Posting in diesem Thread). Wenn das aber in Sametime Expeditor nötig ist, sollte IBM sich was überlegen, weil das widerspricht imho wirklich der Eclipse Architektur, die auf Autonomie und schnell aktivierbare plug-ins ausgerichtet ist.
B) com.lekkimworld.sametime.notes_session_holder.internal Hier gehts um das cachen einer Session über verschiedene Verbindungszyklen mit Domino. Es berücksichtigt session-Timeouts. Nett. Wirklich.
Die restlichen sind Features (eine Methode des Packaging von Plug-ins in Eclipse) und Beispielanwendungen (offenbar Darstellung von Informationen aus private und öffentliche Notes NABs in Sametime)
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln