gpt4 book ai didi

java - Tomcat 8 Embedded - ContextResource 已弃用的替代方案

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:55:54 24 4
gpt4 key购买 nike

相信你。

我想将我的嵌入式 tomcat 源代码从 tomcat 7 迁移到 tomcat 8。但我对 org.apache.catalina.deploy.ContextResource 有疑问,目前我还不知道使用其他方式。

我相信 org.apache.catalina.deploy 在 tomcat 8 中被弃用了。

整体源代码:

public class Tomcat8LocalServer {
public static void main(String[] args) {
String baseDir = (System.getProperty("basedir") == null ? System.getProperty("user.dir") : System
.getProperty("basedir")) + "/public_html/epi_html";

Tomcat tomcat = new Tomcat();
tomcat.enableNaming();
try {
Context context = tomcat.addWebapp("/epi", baseDir);

bindDataSource(context);

tomcat.getConnector().setPort(Integer.valueOf(System.getProperty("tomcat.embedded.port", "8080")));
}
catch (ServletException ex) {
throw new IllegalStateException("failed to add webapp", ex);
}

try {
long start = System.currentTimeMillis();
tomcat.start();
System.out.println("[Tomcat embedded] Server started in " + (System.currentTimeMillis() - start) + " ms");
System.setProperty("tomcat.embedded.enabled", "true");
}
catch (LifecycleException ex) {
throw new IllegalStateException("failed to start tomcat server", ex);
}
tomcat.getServer().await();
}

private static void bindDataSource(Context context) {

ContextResource res = new ContextResource();

res.setName("jdbc/EPIZIV_DS");
res.setType("javax.sql.DataSource");

res.setProperty("username", System.getProperty("tomcat.embedded.datasource.username", "EPIZIV"));
res.setProperty("password", System.getProperty("tomcat.embedded.datasource.password", "EPIZIV"));
res.setProperty("driverClassName",
System.getProperty("tomcat.embedded.datasource.driver", "oracle.jdbc.OracleDriver"));
res.setProperty("url",
System.getProperty("tomcat.embedded.datasource.url", "jdbc:oracle:thin:@localhost:1521:xe"));
res.setProperty("maxActive", System.getProperty("tomcat.embedded.datasource.max.active", "5"));
res.setProperty("maxIdle", System.getProperty("tomcat.embedded.datasource.max.idle", "1"));

context.getNamingResources().addResource(res);
}

堆栈跟踪快照: Stacktrace

我的问题:

  1. 有什么方法可以替换 org.apache.catalina.deploy.ContextResource 吗?
  2. 如何将数据源属性初始化/绑定(bind)到嵌入式 tomcat 8 源代码中?

最佳答案

ContextResource可以在 Tomcat Embedded Core 中找到它的包名应该是“org.apache.tomcat.util.descriptor.web”。你可以检查你的导入和类路径吗?

关于java - Tomcat 8 Embedded - ContextResource 已弃用的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34783067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com