将Java应用程序部署到Tomcat时出现的问题

将Java应用程序部署到Tomcat时出现的问题,java,tomcat,netbeans,deployment,javadb,Java,Tomcat,Netbeans,Deployment,Javadb,我构建了一个简单的JavaWeb应用程序。它提供了一系列RESTful API,供用户通过web界面在JavaDB上执行某些操作。我在开发过程中使用了NetBeans环境,并使用Glassfish进行测试 现在我已经完成了,我希望能够使用二进制文件将它部署到另一台机器上(尽管现在我使用的是同一台机器,直到我学会如何做) 我安装了Tomcat 7,并将.war文件移动到Tomcat的webapp文件夹中。应用程序将部署。此后,我尝试使用为此创建的按钮从数据库中读取一些数据,但出现以下错误 我不确

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

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

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

我不确定哪里出了问题,但我有两个理论

1) web应用程序无法连接到数据库。然而,在从NetBeans启动JavaDB之后,当我再次尝试运行该应用程序时,没有任何区别

2) 不知何故,应用程序无法到达节点服务。我假设在移动应用程序时不需要更改API链接,但也许我错了

也许还有其他问题我没有考虑过吗?如果您能就如何正确部署这样的应用程序提供任何建议,我将不胜感激


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

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

如果您想在生产或测试环境中使用TomCat,这可能是您的最佳选择,它基本上是TomCat+JavaEE的其他特性

编辑: 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>

您可以查看有关数据源的更多详细配置。

谢谢您的建议。我已经安装了TomEE,并将.war文件放在那里。该应用程序运行正常,但当我试图从数据库中获取数据时,我收到一系列Java持久性错误,“用户缺少权限或找不到对象”,关于应用程序使用的单个表,即使我从Netbeans启动了数据库。我是否也必须在TomEE上运行JavaDB?您需要以独立模式启动JavaDB。%JAVADB_HOME%/bin/startNetworkServer.bat设置数据源非常简单。您需要向tomee/conf目录中的tomee.xml添加一个资源条目
@Path("resources")
@Stateless
public class MyResources{
    @Resource(name="myDataSource")
    DataSource dataSource;

    @GET
    public Response SomeMethod(){
         //Do stuff here
    }
}