【问题标题】:Issues deploying a Java application to Tomcat将 Java 应用程序部署到 Tomcat 的问题
【发布时间】:2018-07-14 12:51:35
【问题描述】:

我构建了一个简单的 Java Web 应用程序。它提供了一系列 RESTful API 供用户通过 Web 界面对 Java DB 执行某些操作。我在开发过程中使用了 NetBeans 环境,并在测试中使用了 Glassfish。

现在我已经完成了,我希望能够使用二进制文件将它部署在另一台机器上(尽管现在我使用同一台机器,直到我学会了如何去做)。

我安装了 Tomcat 7,并将 .war 文件移动到 Tomcat 的 webapp 文件夹中。应用程序部署。此后,我尝试使用为此创建的按钮从数据库中读取一些数据,但出现以下错误

我不确定出了什么问题,但我有两个理论。

1) Web 应用程序无法连接到数据库。然而,当我再次尝试运行应用程序时,从 NetBeans 启动 JavaDB 后,并没有什么不同。

2) 不知何故,应用程序无法访问 Node 服务。我以为移动应用时不需要更改 API 链接,但也许我错了。

或者也许还有其他一些我没有考虑过的问题?对于如何正确部署此类应用程序的任何建议,我将不胜感激。

编辑:问题已通过使用 TomEE 解决。

【问题讨论】:

    标签: java tomcat netbeans deployment javadb


    【解决方案1】:

    错误来自您选择的应用程序服务器。 TomCat 只是一个 servlet 容器(意味着它只支持 Servlet/JSP)。 任何其他功能(JAX-RS、CDI 等)都需要经过 Java EE 认证的服务器,例如GlassFish、WildFly、Payara、WebLogic、OpenLiberty 或 TomEE。

    TomEE 可能是你最好的选择,如果你想在你的生产或测试环境中使用 TomCat,它基本上是 TomCat + Java EE 的其他功能。

    编辑: TomEE 没有像 GlassFish 那样用于 JNDI 数据源配置的 GUI,您需要编辑 conf/tomee.xml

    <Resource id="myDataSource" type="javax.sql.DataSource">
        jdbcDriver = org.apache.derby.jdbc.ClientDriver
        jdbcUrl = jdbc:derby://localhost:1527/dbname
        userName = app
        password = app
    </Resource>
    

    在你的 java 代码中:

    @Path("resources")
    @Stateless
    public class MyResources{
        @Resource(name="myDataSource")
        DataSource dataSource;
    
        @GET
        public Response SomeMethod(){
             //Do stuff here
        }
    }
    

    您可以查看here获取更多关于数据源的详细配置。

    【讨论】:

    • 感谢您的建议。我已经安装了 TomEE,并将 .war 文件放在那里。应用程序运行正常,但是当我尝试从数据库中获取数据时,我收到一系列 Java 持久性错误,“用户缺少权限或找不到对象”关于应用程序使用的单个表,即使我已经启动了数据库来自 Netbeans。我是否也必须在 TomEE 上运行 JavaDB?
    • 您需要以独立模式启动 javadb。 %JAVADB_HOME%/bin/startNetworkServer.bat 设置数据源很简单。需要在tomEE/conf目录下的tomee.xml中添加资源入口
    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    相关资源
    最近更新 更多