我是新來的文件服務器實施。 Alfresco jlan似乎是一個好開始,因爲它是大多數服務器協議(CIFS,NFS和FTP)的純Java實現。有很多線程專門用於露天,但不是特定於jlan。如何在NetBeans中將jlan設置爲獨立的Java包?如何將alfresco jlan文件服務器設置爲獨立的java包?
在此先感謝。
我是新來的文件服務器實施。 Alfresco jlan似乎是一個好開始,因爲它是大多數服務器協議(CIFS,NFS和FTP)的純Java實現。有很多線程專門用於露天,但不是特定於jlan。如何在NetBeans中將jlan設置爲獨立的Java包?如何將alfresco jlan文件服務器設置爲獨立的java包?
在此先感謝。
看一看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上的內置文件共享。
嗨,我想嘗試你的代碼,但它看起來像CifsAuthenticator附近有一個錯誤。你可以發佈一個更新的版本,或只是解釋做什麼?謝謝。 – Filimindji 2014-11-26 14:16:13
對不起,我刪除了重複的身份驗證器(上面的示例授予任何用戶訪問權限)。更新。 – blagerweij 2014-11-26 14:34:54
感謝您的更新。現在authenticatorConfigElement丟失:-) – Filimindji 2014-11-26 14:35:09
我認爲您希望JLan能夠自行處理這種情況,而不是完全的Alfresco存儲庫(遠遠不止是jlan)。您是否嘗試[下載JLan源代碼](http://sourceforge.net/projects/alfresco/files/JLAN/Alfresco%20JLAN%205.0/)並將其添加到您的項目中? – Gagravarr 2014-10-30 10:22:04
@Gagravarr 12謝謝。是的,我已經嘗試過,但我得到文件未找到錯誤 - 缺少jlanserver.xml – 2014-10-30 23:23:00
我認爲你需要提供其中的一個端口,綁定等。應該是一個'.xml.sample'或類似的來源包,找到一個運氣並填寫它? – Gagravarr 2014-10-31 00:22:16