Jsp 将Webapp上载到CloudBees
我正在尝试将我的webapp和数据库上载到,但我的数据库似乎没有响应该应用程序。我跟着视频上传我的数据库和视频上传我的网络应用程序。但还是不行 更新我找到了这个stacktrace:Jsp 将Webapp上载到CloudBees,jsp,spring-mvc,cloudbees,Jsp,Spring Mvc,Cloudbees,我正在尝试将我的webapp和数据库上载到,但我的数据库似乎没有响应该应用程序。我跟着视频上传我的数据库和视频上传我的网络应用程序。但还是不行 更新我找到了这个stacktrace: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL 'ec2-23-21-211-172.compute-1.amazon
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL 'ec2-23-21-211-172.compute-1.amazonaws.com'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at com.neu.als.thesis.utilities.DefaultValuesUtility.getQuestionsCount(DefaultValuesUtility.java:2069)
at com.neu.als.thesis.utilities.DefaultValuesUtility.checkDataBase(DefaultValuesUtility.java:2240)
at com.neu.als.thesis.web.controllers.DefaultController.index(DefaultController.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:444)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:432)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:946)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:822)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:680)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
... 38 more
这是我在CloudBees中的应用程序配置:
这是我在CloudBees中的数据库配置:
我的web.xml
<!-- Database resources -->
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/testd</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
我的数据库连接类:
public final class DatabaseCommunication
{
public static DatabaseCommunication getInstance()
{
return DatabaseCommunicationHolder.INSTANCE;
}
/**
* private declaration of dataSource variable to avoid instanciation
*/
private DataSource dataSource;
/**
* @return returns data source instance
*/
public synchronized DataSource getDataSource() throws NamingException
{
if( dataSource == null )
{
InitialContext cxt = new InitialContext();
dataSource = ( DataSource ) cxt.lookup( "java:/comp/env/jdbc/testd" );
}
return dataSource;
}
private static class DatabaseCommunicationHolder
{
/**
* instanciates DatabaseCommunication
*/
public static final DatabaseCommunication INSTANCE = new DatabaseCommunication();
}
}
我在workbench中的设置:
密码是:password
我使用以下命令绑定了数据库:
在我的本地帐户中,我可以从我的数据库登录到帐户。但我不知道为什么在云蜂中没有<代码>蜜蜂应用程序:bind-db testd-a demoproject-as testd
请帮帮我。好吧,我更愿意在datasource.xml文件中使用此文件与JNDI进行绑定
<jee:jndi-lookup id="dataSource" jndi-name="jdbc/testdb" resource-ref="true"/>
您可以尝试不在context.xml文件中声明数据源。相反,您将通过CloudBees SDK自动向其注入app:bind命令。通过这种方式,您可以确保正确声明了数据源
然后应该删除context.xml文件的这一部分
<Resource name="jdbc/testd" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="testus" password="password"
url="ec2-23-21-211-172.compute-1.amazonaws.com"
driverClassName="com.mysql.jdbc.Driver" />
所以,它应该是这样的:
<Context>
<Loader delegate="true" />
</Context>
资源URL必须是JDBC URLJDBC:mysql:ec2-23-21-211-172.compute-1.amazonaws.com:3306/database
,而不仅仅是服务器主机名关于您给出的第一个选项,我应该将代码放在哪里,以及我的web.xml
中是否应该做任何更改?关于第二个选项,如果我删除了代码,我应该把删除的代码放在哪里?据我所知,代码定义了数据库。对于这个noob评论很抱歉。对于第一个选项,您有一个关于这个ClickStart()的示例,请不要使用Spring配置文件(),因为如果您使用它,您必须在CloudBees端做更多的更改。对于第二个,您不必将此代码放在任何地方,因为当您启动蜜蜂应用程序:bind命令时,CloudBees会自动将其注入容器中。实际示例:我正在编写一个简单的代码,但我没有完成它。我的web.xml
呢jdbc/testd
我是否也应该删除它?
<Context>
<Loader delegate="true" />
</Context>