diff options
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, 0 insertions, 150 deletions
diff --git a/files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html b/files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html deleted file mode 100644 index 38fe28447c..0000000000 --- a/files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -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> |
