2014-10-29 47 views
2

我是新來的文件服務器實施。 Alfresco jlan似乎是一個好開始,因爲它是大多數服務器協議(CIFS,NFS和FTP)的純Java實現。有很多線程專門用於露天,但不是特定於jlan。如何在NetBeans中將jlan設置爲獨立的Java包?如何將alfresco jlan文件服務器設置爲獨立的java包?

在此先感謝。

+0

我認爲您希望JLan能夠自行處理這種情況,而不是完全的Alfresco存儲庫(遠遠不止是jlan)。您是否嘗試[下載JLan源代碼](http://sourceforge.net/projects/alfresco/files/JLAN/Alfresco%20JLAN%205.0/)並將其添加到您的項目中? – Gagravarr 2014-10-30 10:22:04

+0

@Gagravarr 12謝謝。是的,我已經嘗試過,但我得到文件未找到錯誤 - 缺少jlanserver.xml – 2014-10-30 23:23:00

+0

我認爲你需要提供其中的一個端口,綁定等。應該是一個'.xml.sample'或類似的來源包,找到一個運氣並填寫它? – Gagravarr 2014-10-31 00:22:16

回答

3

看一看http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/projects/alfresco-jlan/

在這裏,您將使用所提供的XML配置找到runsrv.bat(和runsrv.sh)腳本來啓動一個JLANServer:jlanConfig.xml

由於提供的文件( jlanConfig.xml和JLANServer)不是提供的二進制文件的一部分(例如,不是alfresco-jlan-embed v5.0.b的一部分),你需要自己提供一個類似的設置。

例如:

ServerConfiguration cfg = new JLANFileServerConfiguration(); 

    NetBIOSNameServer netBIOSNameServer = new NetBIOSNameServer(cfg); 
    cfg.addServer(netBIOSNameServer); 
    SMBServer smbServer = new SMBServer(cfg); 
    cfg.addServer(smbServer); 

    // start servers 
    for (int i = 0; i < cfg.numberOfServers(); i++) { 
     NetworkServer server = cfg.getServer(i); 
     server.startServer(); 
    } 

的ServerConfiguration可以從XML文件中使用Java代碼來讀取,或構建:

private static final String HOSTNAME = "JLANHOST"; 

private static final int DefaultThreadPoolInit = 25; 
private static final int DefaultThreadPoolMax = 50; 

private static final int[] DefaultMemoryPoolBufSizes = { 256, 4096, 16384, 66000 }; 
private static final int[] DefaultMemoryPoolInitAlloc = { 20, 20,  5,  5 }; 
private static final int[] DefaultMemoryPoolMaxAlloc = { 100, 50, 50, 50 }; 

public JLANFileServerConfiguration() throws InvalidConfigurationException, DeviceContextException { 
    super(HOSTNAME); 
    setServerName(HOSTNAME); 

    // DEBUG 
    DebugConfigSection debugConfig = new DebugConfigSection(this); 
    final GenericConfigElement debugConfigElement = new GenericConfigElement("output"); 
    final GenericConfigElement logLevelConfigElement = new GenericConfigElement("logLevel"); 
    logLevelConfigElement.setValue("Debug"); 
    debugConfig.setDebug("org.alfresco.jlan.debug.ConsoleDebug", debugConfigElement); 

    // CORE 
    CoreServerConfigSection coreConfig = new CoreServerConfigSection(this); 
    coreConfig.setMemoryPool(DefaultMemoryPoolBufSizes, DefaultMemoryPoolInitAlloc, DefaultMemoryPoolMaxAlloc); 
    coreConfig.setThreadPool(DefaultThreadPoolInit, DefaultThreadPoolMax); 
    coreConfig.getThreadPool().setDebug(true); 

    // GLOBAL 
    GlobalConfigSection globalConfig = new GlobalConfigSection(this); 

    // SECURITY 
    SecurityConfigSection secConfig = new SecurityConfigSection(this); 
    DefaultAccessControlManager accessControlManager = new DefaultAccessControlManager(); 
    accessControlManager.setDebug(true); 
    accessControlManager.initialize(this, new GenericConfigElement("aclManager")); 
    secConfig.setAccessControlManager(accessControlManager); 
    secConfig.setJCEProvider("cryptix.jce.provider.CryptixCrypto"); 
    final UserAccountList userAccounts = new UserAccountList(); 
    secConfig.setUserAccounts(userAccounts); 

    // SHARES 
    FilesystemsConfigSection filesysConfig = new FilesystemsConfigSection(this); 
    DiskInterface diskInterface = new org.alfresco.jlan.smb.server.disk.JavaFileDiskDriver(); 
    final GenericConfigElement driverConfig = new GenericConfigElement("driver"); 
    final GenericConfigElement localPathConfig = new GenericConfigElement("LocalPath"); 
    localPathConfig.setValue("."); 
    driverConfig.addChild(localPathConfig); 
    DiskDeviceContext diskDeviceContext = (DiskDeviceContext) diskInterface.createContext("JLANSHARE", driverConfig); 
    diskDeviceContext.setShareName("JLANSHARE"); 
    diskDeviceContext.setConfigurationParameters(driverConfig); 
    diskDeviceContext.enableChangeHandler(false); 
    diskDeviceContext.setDiskInformation(new SrvDiskInfo(2560000, 64, 512, 2304000));// Default to a 80Gb sized disk with 90% free space 
    DiskSharedDevice diskDev = new DiskSharedDevice("JLANSHARE", diskInterface, diskDeviceContext); 
    diskDev.setConfiguration(this); 
    diskDev.setAccessControlList(secConfig.getGlobalAccessControls()); 
    diskDeviceContext.startFilesystem(diskDev); 
    filesysConfig.addShare(diskDev); 

    // SMB 
    CIFSConfigSection cifsConfig = new CIFSConfigSection(this); 
    cifsConfig.setServerName(HOSTNAME); 
    cifsConfig.setDomainName("MYDOMAIN"); 
    cifsConfig.setHostAnnounceInterval(5); 
    cifsConfig.setHostAnnouncer(true); 
    final CifsAuthenticator authenticator = new LocalAuthenticator() { 
     @Override 
     public int authenticateUser(ClientInfo client, SrvSession sess, int alg) { 
      return AUTH_ALLOW; 
     } 
    }; 
    authenticator.setDebug(true); 
    authenticator.setAllowGuest(true); 
    authenticator.setAccessMode(CifsAuthenticator.USER_MODE); 
    final GenericConfigElement authenticatorConfigElement = new GenericConfigElement("authenticator"); 
    authenticator.initialize(this, authenticatorConfigElement); 
    cifsConfig.setAuthenticator(authenticator); 
    cifsConfig.setHostAnnounceDebug(true); 
    cifsConfig.setNetBIOSDebug(true); 
    cifsConfig.setSessionDebugFlags(-1); 
    cifsConfig.setTcpipSMB(true); 
} 

請注意,爲了使用JLAN在Windows中,您需要禁用端口445上的內置文件共享。

+0

嗨,我想嘗試你的代碼,但它看起來像CifsAuthenticator附近有一個錯誤。你可以發佈一個更新的版本,或只是解釋做什麼?謝謝。 – Filimindji 2014-11-26 14:16:13

+0

對不起,我刪除了重複的身份驗證器(上面的示例授予任何用戶訪問權限)。更新。 – blagerweij 2014-11-26 14:34:54

+0

感謝您的更新。現在authenticatorConfigElement丟失:-) – Filimindji 2014-11-26 14:35:09

相關問題