我构建了一个简单的Java Web应用程序。它为用户提供了一系列RESTful API,以通过Web界面在Java DB上执行某些操作。我在开发期间使用了NetBeans环境,并使用Glassfish进行测试。
现在我完成了它,我希望能够使用二进制文件在另一台机器上部署它(尽管我现在使用同一台机器直到我学会了它)。
我安装了Tomcat 7,并将.war文件移动到Tomcat的webapp文件夹中。该应用程序部署。此后,我尝试使用我为此创建的按钮从数据库中读取一些数据,但得到以下错误
我不确定出了什么问题,但我有两个理论。
1)Web应用程序无法连接到数据库。然而,当我尝试再次运行应用程序时,从NetBeans启动JavaDB后,没有任何区别。
2)不知何故,应用程序无法访问Node服务。我假设在移动应用程序时不需要更改API链接,但也许我错了。
或许还有其他一些我没有考虑过的问题?对于如何正确部署此类应用程序的任何建议,我将不胜感激。
编辑:使用TomEE解决了这个问题。
答案 0 :(得分:1)
错误来自您选择的应用程序服务器。 TomCat只是一个servlet容器(意味着它只支持Servlet / JSP)。 任何其他功能(JAX-RS,CDI等)都需要Java EE认证的服务器,例如GlassFish,WildFly,Payara,WebLogic,OpenLiberty或TomEE。
如果您想在生产或测试环境中使用TomCat,那么TomEE可能是您最好的选择,它基本上是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以获取有关数据源的更多详细信息配置。