我是文件服务器实现的新手。 Alfresco jlan似乎是一个良好的开端,因为它是大多数服务器协议的纯Java实现 - CIFS,NFS和FTP。有很多线程专门用于露天,但不是特定于jlan。如何在NetBeans中将jlan设置为独立的java包?
提前致谢。
答案 0 :(得分:4)
在这里,您将找到一个runsrv.bat(和runsrv.sh)脚本,使用提供的XML配置来引导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);
}
请注意,要在Windows机器上使用JLAN,您需要在端口445上禁用内置文件共享。