使用 Jetty 运行 JFinal 项目,没有加载配置文件

项目启动的 main 函数如下

public static void main(String[] args) {
		String webAppDir=Server.class.getResource("/").getPath().replace("/WEB-INF/classes/", "");
		int port=8066; 
		String content="/transfer";
		if(args!=null&&args.length>0){
			try{
			port=Integer.parseInt(args[0]);
			content=args[1];
			}catch(Exception e){}
		}
		try{
			JFinal.start(webAppDir.substring(1), port,content, 10);
		}catch(Exception e){e.printStackTrace();}
	}

在启动后,本地项目是不可以连接已经配置的数据库的,但是启动的日志没有报错,直接是:

Starting JFinal 1.9

Starting scanner at interval of 10 seconds.

Starting web server on port: 8066

Starting Complete. Welcome To The JFinal World :)


启动的类如下:

private void doStart() {
		if (!available(port))
			throw new IllegalStateException("port: " + port + " already in use!");
		
		deleteSessionData();
		
		System.out.println("Starting JFinal " + Const.JFINAL_VERSION);
		server = new Server();
		SelectChannelConnector connector = new SelectChannelConnector();
		connector.setPort(port);
		server.addConnector(connector);
		webApp = new WebAppContext();
		webApp.setContextPath(context);
		webApp.setResourceBase(webAppDir);	// webApp.setWar(webAppDir);
		webApp.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false");
		webApp.setInitParameter("org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false");	// webApp.setInitParams(Collections.singletonMap("org.mortbay.jetty.servlet.Default.useFileMappedBuffer", "false"));
		persistSession(webApp);
		
		server.setHandler(webApp);
		changeClassLoader(webApp);
		
		// configureScanner
		if (scanIntervalSeconds > 0) {
			Scanner scanner = new Scanner(PathKit.getRootClassPath(), scanIntervalSeconds) {
				public void onChange() {
					try {
						System.err.println("\nLoading changes ......");
						webApp.stop();
						JFinalClassLoader loader = new JFinalClassLoader(webApp, getClassPath());
						webApp.setClassLoader(loader);
						webApp.start();
						System.err.println("Loading complete.");
					} catch (Exception e) {
						System.err.println("Error reconfiguring/restarting webapp after change in watched files");
						e.printStackTrace();
					}
				}
			};
			System.out.println("Starting scanner at interval of " + scanIntervalSeconds + " seconds.");
			scanner.start();
		}
		
		try {
			System.out.println("Starting web server on port: " + port);
			server.start();
			System.out.println("Starting Complete. Welcome To The JFinal World :)");
			server.join();
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(100);
		}
		return;
	}


不清楚是为什么?

评论区

JFinal

2018-05-03 11:46

没秒懂

问题是什么,要解决什么问题?

这句话是什么意思: 在启动后,本地项目是不可以连接已经配置的数据库的

vv

2018-05-03 11:52

@JFinal 是我配置文件里面配置了数据库,但是本机是不可以访问这个数据库的,启动的时候项目没有报错。项目启动后,浏览器也不可以访问这个项目

vv

2018-05-03 11:55

@JFinal 其实这个项目实际是一个完整的项目,已经在生产运行的,我是检出到另一台机器上,启动就这个样子,我比较不懂。

JFinal

2018-05-03 12:19

异常也没有,代码也没有,无论如何也猜测不到原因,单步调式一下是终极解决方案

vv

2018-05-03 12:31

@JFinal 在这个初始化配置的类中 public class OAConfig extends JFinalConfig 打断点,完全没有进来,所以就不知道为什么没有加载JFinal 的初始化配置

明镜

2018-11-20 17:28

解决了吗,同遇到,头大;昨天还好好的允许

热门反馈

扫码入社