Ich benutze das XPages REST-Steuerelement, um auf Ressourcen in einer Datenbank zuzugreifen, die sich von der Datenbank unterscheidet, in der sich das REST-Steuerelement selbst befindet. Das ist einfach, ich benutze nur die databaseName Eigenschaft In SSJS möchte ich ein Handle auf die externe Datenbank (die eine in der Eigenschaft databaseName bezogen) und das scheint ziemlich herausfordernd sein In diesem speziellen Fall Ich benötige dieses Handle in einer Ansichtsspaltenformel, um auf Daten in einem übergeordneten Dokument zuzugreifen. Wenn es keine externe Datenbank gab, würde ich einfach die globale Datenbankeigenschaft verwenden, aber das wird in diesem Fall nicht funktionieren, da es auf die Datenbank verweist, die das REST-Steuerelement hostet.XPages REST-Kontrolle. Wie bekomme ich ein Handle zur externen Datenbank?
Antwort
Ich empfehle, was Frank van der Linden in den Kommentaren empfohlen, um es als eine xsp-Eigenschaft, die leicht durch eine Eigenschaft getting Methode/Funktion, die Sie verwenden können, und hat den schönen Nebeneffekt der Erstellung Ihrer Daten Verbindungsaufruf kann leicht zwischen Anwendungen kopiert/eingefügt werden.
Beispiel:
ich die data property name stored as an xsp property haben, in <app>/WebContent/WEB-INF/xsp.properties
:
xsp.local.data=MyApp_data.nsf
ich passieren a managed bean to perform the app config Arbeit verwenden:
<managed-bean>
<managed-bean-name>confBean</managed-bean-name>
<managed-bean-scope>application</managed-bean-scope>
<managed-bean-class>com.myApp.config.AppUtil</managed-bean-class>
</managed-bean>
Das bedeutet, dass my AppUtil bean die Eigenschaft auf den db Pfad setzt :
ExtLibUtil.getXspContext().getProperty("xsp.local.data", "MyApp_data.nsf")
* Anmerkung: die erste Parameter ist der Name der Eigenschaft, die zweite ist die ‚default‘ (Fail-Over) Wert, falls es nicht den Wert der Eigenschaft
dann den vollständigen Pfad ziehen findet für Ihre xe: restService, alles was Sie brauchen würde, ist in den Werten schieben zu tun, wie so (den gleichen Server unter der Annahme, Beispiel zeigt eine xe: viewJsonService mit Standardspalten):
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xe:restService
id="restService1"
pathInfo="data">
<xe:this.service>
<xe:viewJsonService
databaseName="#{confBean.dbAppPath}"
viewName="SomeView"
defaultColumns="true" />
</xe:this.service>
</xe:restService>
</xp:view>
[Update ]
Wie Sven Hasselbach in den folgenden Kommentaren hervorhebt, würde eine verwaltete Eigenschaft ungefähr das gleiche Ergebnis erzielen, ohne die xsp-Eigenschaftendatei zu bearbeiten und die Eigenschaft (die für die Anwendung explizit ist) in die Definition der verwalteten Bean einfließen lässt. Entnommen aus seiner Antwort auf XPages managed beans and scoped variables, hier ist ein Beispiel dafür, wie Sven macht das gleiche, eine verwaltete Eigenschaft mit:
in faces-config.xml
<managed-bean>
<managed-bean-name>myBean</managed-bean-name>
<managed-bean-class>ch.hasselba.xpages.MyBean</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<managed-property>
<property-name>dbName</property-name>
<value>MyName</value>
<property-class>java.lang.String</property-class>
</managed-property>
</managed-bean>
In seiner Config-Bohne, es ist wie jede Eigenschaft definiert (a la POJO) , mit dem Privateigentum und öffentlichen Getter/Setter:
//...
private String dbName;
public void setDbName(String dbName) {
this.dbName = dbName;
}
public String getDbName() {
return dbName;
}
//...
Nutzbare wie jede verwaltete Bean-Eigenschaft:
<xp:text
value="#{myBean.dbName}" />
Warum nicht stattdessen eine verwaltete Eigenschaft verwenden? –
Das wäre eine ziemlich gute Verwendung, besonders da dieses Beispiel sich nur auf eine Eigenschaft konzentriert und eine großartige Möglichkeit ist, der Eigenschaft einer verwalteten Bean einen 'statischen finalen' Wert hinzuzufügen. Ich habe es meiner Antwort hinzugefügt. –
Danke, bitte sehen Sie meine eigene Antwort auf die Frage unten. Vielleicht war es in der ursprünglichen Frage nicht klar, aber meine Bedenken waren mehr darüber, wie man das db-Objekt selbst behandelt, nicht den Pfad zur db –
In meiner ursprünglichen Frage wurde nicht darauf hingewiesen, aber ich habe ein Config-Servlet, das den Pfad zur externen Datenbank definiert.
Die Frage war mehr über eine Handle auf das Datenbankobjekt in einer Weise, die nicht zu viel Aufwand zu schaffen. Nach einem Gespräch mit Paul Winters im Slack (OpenNTF channel) gestern bin ich zuversichtlich, dass das Öffnen der externen db in einer View-Spalte vollkommen in Ordnung ist.
eher für einen Griff an die externe Quelle innerhalb des Dienstes als suchen, habe ich einfach den db in Code öffnen, wenn mein Code für die endgültige Lösung neededSo läuft darauf hinaus, ein paar einfachen Codezeilen nach unten:
var pid = rowData.getColumnValue("r_companyid"); var path = configBean.getDbPath(no.mycompany.myapp.Configuration.DB_PATH_CONTACTS); var contactsDb:NotesDatabase = session.getDatabase(database.getServer(), path); var docParent:NotesDocument = contactsDb.getDocumentByUNID(pid); retVal = docParent.getItemValueString("CompanyName");
- 1. Wie bekomme ich einen Hyperlink zur Arbeit aus der Datenbank
- 2. xpages: wie bekomme ich die Summe der kategorisierten Spalte
- 3. Schließen eines Datenbank-Handle
- 4. Wie bekomme ich ein richtiges Tabellendesign (0NF) für meine Datenbank
- 5. Wie bekomme ich WIN32OLE-Handle für IE über watir-webdriver?
- 6. Wie bekomme ich das Modul-Handle meines eigenen Codes?
- 7. Wie bekomme ich Python zur Verwendung Assembly
- 8. Wie bekomme ich ein Bild von MySQL-Datenbank über PHP
- 9. Wie bekomme ich GetModuleFileName(), wenn ich nur ein Fenster-Handle (hWnd) habe?
- 10. Wie bekomme ich dieses Ratespiel zur Arbeit?
- 11. Wie bekomme ich meinen Hintergrund zur Arbeit
- 12. C, wie sqlite3 Datenbank-Handle zu übertragen
- 13. WPF: Wie handle ich ein Ereignis von einem Modell zur dynamischen Aktualisierung XAML in MVVM
- 14. Magento: Wie bekomme ich Beobachter in einem externen Skript arbeiten?
- 15. Xpages: Wie man von CacheBean auf die Datenbank zugreift
- 16. Wie bekomme ich Codeabdeckung einer externen Java-Bibliothek mit Jacoco?
- 17. Wie bekomme ich externen HTML-Seiteninhalt mit jquery oder ajax
- 18. Wie bekomme ich alle externen Bild in WP-Beitrag
- 19. Wie bekomme ich Zugang zur Restcomm Cloud?
- 20. Wie bekomme ich die Summe zur Arbeit?
- 21. Wie bekomme ich pyodbc.connect zur Eingabeaufforderung?
- 22. Wie bekomme ich MySQL-Datenbank in index.php
- 23. Wie speichere ich ein Handle von ActiveDocument in einer Variablen?
- 24. Ich bekomme java.lang.UnsatisfiedLinkError zur Laufzeit
- 25. Wie kann ich feststellen, ob ein Perl-Datei-Handle ein Lese- oder Schreib-Handle ist?
- 26. Wie bekomme ich die Ausgabe eines externen Befehls in Perl?
- 27. Wie bekomme ich HTML von externen Inhalten mit Jquery?
- 28. Wie bekomme ich Magento-Datenbank-Details
- 29. Wie bekomme ich eine persistente lokale Datenbank?
- 30. Laravel zur externen URL gehen?
Nicht sicher, ob dies hilft, aber so stelle ich eine Verbindung zu einer externen Datenbank in Bluemix her, um einen durchsuchbaren REST-Service zu erstellen - http://xomino.com/2015/11/27/xpages-in-bluemix-creating-a-searchable -rest-service/ – MarkyRoden
speichern Sie diesen externen Datenbanknamen in der Datei xsp.properties oder in einer eigenen Eigenschaftendatei. So kann die gesamte Anwendung von diesem Parameter profitieren –