diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html')
-rw-r--r-- | files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html b/files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html new file mode 100644 index 0000000000..38fe28447c --- /dev/null +++ b/files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html @@ -0,0 +1,150 @@ +--- +title: Using LDAP XPCOM with XULRunner +slug: Archive/Mozilla/XULRunner/LDAP_XPCOM +tags: + - XUL + - XULRunner +translation_of: Archive/Mozilla/XULRunner/LDAP_XPCOM +--- +<p> </p><p>標準では XULRunner は LDAP XPCOM サポート無しでビルドされています。もし XUL アプリケーションで LDAP コンポーネントを使いたいのであれば、二つのオプションがあります: XULRunner を LDAP サポートを有効にしてビルドする事、もう一つは LDAP XPCOM を XUL アプリ(のコンポーネントディレクトリ)に直接追加する事です。 +</p><p>いずれのケースでも、 <tt>--enable-ldap</tt> ビルドオプションを追加して、 LDAP XPCOM をビルドする必要があるでしょう。 XULRunner のビルドの仕方について詳細な情報 +は <a href="ja/Build_Documentation">Build_Documentation</a> をごらんになってください。<a href="ja/Configuring_Build_Options">Configuring Build Options</a> では、以下を .mozconfig ファイルに追加します: +</p> +<pre class="eval">ac_add_options --enable-ldap +</pre> +<p>これでビルドパッケージのコンポーネントディレクトリに以下の二つのファイルが作成されます: +</p> +<ul><li> <tt>mozldap.dll</tt> (もしくは libmozldap.so かなにか...) +</li><li> <tt>mozldap.xpt</tt> +</li></ul> +<p>そしてビルドパッケージのルートディレクトリに以下の二つのファイルが作成されます: +windows上では: +</p> +<ul><li> <tt>nsldap32v50.dll</tt> +</li><li> <tt>nsldappr32v50.dll</tt> +</li></ul> +<p>linux上では: +</p> +<ul><li> <tt>libldap50.so</tt> +</li><li> <tt>libprldap50.so</tt> +</li></ul> +<p>これらはネイティブの LDAP ライブラリです。 +</p><p>もし通常通りにこれらのファイルを XUL アプリの <tt>components</tt> に追加したとしても、これは動作しません。実際のところ、 LDAP インターフェイスは利用できます(例えば <tt>Components.interfaces.nsILDAPConnection</tt> は null ではありません)が、コンポーネントはロードできません(例えば、 <tt>Components.classes["@mozilla.org/network/ldap-connection;1"]</tt> は null になります)。これは実際にはネイティブの LDAP ライブラリファイルが XULRunner のプロセスが見つけられない事が原因となります。 +</p><p>解決方法としては bsmedberg の手法を使う事で、これは <a href="ja/Using_Dependent_Libraries_In_Extension_Components">Using Dependent Libraries In Extension Components</a> に述べられています: コンポーネントライブラリはリアルライブラリと全ての依存関係の loader となり、これは全ての必要なライブラリがロードされるという事です。 +</p><p>mozilla のソースコードディレクトリに <tt>extensions/ldapstub</tt> というサブディレクトリを作成し、二つのファイル、<tt>Makefile.in</tt> と <tt>LDAPStubLoader.cpp</tt> を入れます: +</p><p>Makefile.in: +</p> +<pre># Copyright (c) 2005 Benjamin Smedberg <benjamin@smedbergs.us> + +DEPTH = ../.. +srcdir = @srcdir@ +topsrcdir = @top_srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +MODULE = mozldapstub +LIBRARY_NAME = mozldap_stub +IS_COMPONENT = 1 +FORCE_SHARED_LIB = 1 + +REQUIRES = \ + xpcom \ + string \ + $(NULL) + +CPPSRCS = LDAPStubLoader.cpp + +EXTRA_DSO_LDOPTS += \ + $(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \ + $(XPCOM_FROZEN_LDOPTS) \ + $(NSPR_LIBS) \ + $(NULL) + +include $(topsrcdir)/config/rules.mk + +DEFINES += -DMOZ_DLL_PREFIX=\"$(DLL_PREFIX)\" +</pre> +<p>LDAPStubLoader.cpp: +</p> +<pre>// Copyright (c) 2005 Benjamin Smedberg <benjamin@smedbergs.us> + +#include "nscore.h" +#include "nsModule.h" +#include "prlink.h" +#include "nsILocalFile.h" +#include "nsStringAPI.h" +#include "nsCOMPtr.h" + +static char const *const kDependentLibraries[] = +{ +#ifdef NS_WIN32 + MOZ_DLL_PREFIX "nsldap32v50" MOZ_DLL_SUFFIX, + MOZ_DLL_PREFIX "nsldappr32v50" MOZ_DLL_SUFFIX, +#endif //NS_WIN32 +#ifdef NS_UNIX + MOZ_DLL_PREFIX "ldap50" MOZ_DLL_SUFFIX, + MOZ_DLL_PREFIX "prldap50" MOZ_DLL_SUFFIX, +#endif //NS_UNIX + nsnull +}; + +// component.dll on windows, libcomponent.dll on linux +static char kRealComponent[] = MOZ_DLL_PREFIX "mozldap" MOZ_DLL_SUFFIX; + +nsresult +NSGetModule(nsIComponentManager* aCompMgr, + nsIFile* aLocation, + nsIModule* *aResult) +{ + nsresult rv; + + nsCOMPtr<nsIFile> libraries; + rv = aLocation->GetParent(getter_AddRefs(libraries)); + if (NS_FAILED(rv)) + return rv; + + nsCOMPtr<nsILocalFile> library(do_QueryInterface(libraries)); + if (!library) + return NS_ERROR_UNEXPECTED; + + library->SetNativeLeafName(NS_LITERAL_CSTRING("libraries")); + library->AppendNative(NS_LITERAL_CSTRING("dummy")); + + // loop through and load dependent libraries + for (char const *const *dependent = kDependentLibraries; + *dependent; + ++dependent) { + library->SetNativeLeafName(nsDependentCString(*dependent)); + PRLibrary *lib; + library->Load(&lib); + // 1) We don't care if this failed! + // 2) We are going to leak this library. We don't care about that either. + } + + library->SetNativeLeafName(NS_LITERAL_CSTRING(kRealComponent)); + + PRLibrary *lib; + rv = library->Load(&lib); + if (NS_FAILED(rv)) + return rv; + + nsGetModuleProc getmoduleproc = (nsGetModuleProc) + PR_FindFunctionSymbol(lib, NS_GET_MODULE_SYMBOL); + + if (!getmoduleproc) + return NS_ERROR_FAILURE; + + return getmoduleproc(aCompMgr, aLocation, aResult); +} +</pre> +<p>そして <tt>.mozconfig</tt> を変更して次の行を追加します: +</p> +<pre class="eval">ac_add_options --enable-extensions=ldapstub +</pre> +<p>XULRunnnerを再ビルドします。これでビルドパッケージの <tt>components</tt> サブディレクトリに新しいファイル、 <tt>mozldap_stub.dll</tt> (Windows上) もしくは <tt>libmozldap_stub.so</tt> (Linux上) が作られるでしょう。 </p><p><tt>mozldap.xpt</tt> と <tt>mozldap_stub.dll</tt> を XUL アプリの <tt>components</tt> サブディレクトリにコピーします。 +XULアプリのディレクトリに <tt>libraries</tt> サブディレクトリを作成し、<tt>mozldap.dll</tt> (もしくは <tt>libmozldap.so</tt>) をコピーして、そしてネイティブ LDAP バイナリをそこに入れます。 +</p><p>プロファイルを削除しておく事を忘れないでください。 +</p><p>これで LDAP コンポーネントが使えるようになります。 +</p><p><span class="comment">Interwiki Language Links</span> +</p> |