JavaWeb:SSH项目在Sinaapp上的部署及域名的绑定

1. 首先在SAE中创建一个新应用

创建应用时,需要我们填写二级域名,比如XXXXXX。在“开发语言”一栏中,选择Java,然后选择对应的JVM级别。

2.查看应用信息
我们可以在“应用首页”查看当前应用的配置,如下图:

技术分享

图1 应用的信息

其中,我们一定要注意,这里面的Access Key和Secret Key这两项,访问MySQL的时候,它们分别是用户名和密码

3.管理MySQL
在服务管理项,选择MySQL子项,我们可以对MySQL进行管理,最简单的就是使用PHPMyAdmin对数据库进行管理,如图2

技术分享

图2

点进去之后,我们就可以管理MySQL了,如下图所示,主要我们的MYSQL的地址和端口号,还有数据库的名称。数据库的名称是app_XXXXXX,其中XXXXXX是app的名称。然后,我们就可以在当前数据库下建立数据库表了。

技术分享

图 3

我们可以使用SQL,建立对应的数据库表,比如,本次SSH项目对应的数据库表为:

/*
Navicat MySQL Data Transfer

Source Server         : localhost_3306
Source Server Version : 50027
Source Host           : localhost:3306
Source Database       : sshmysql

Target Server Type    : MYSQL
Target Server Version : 50027
File Encoding         : 65001

Date: 2015-01-11 10:43:42
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for bbscomment
-- ----------------------------
DROP TABLE IF EXISTS `bbscomment`;
CREATE TABLE `bbscomment` (
  `uuid` varchar(36) NOT NULL,
  `messageid` varchar(32) NOT NULL,
  `username` varchar(32) NOT NULL,
  `content` varchar(512) NOT NULL,
  `touser` varchar(32) default NULL,
  `agree` int(8) default NULL,
  `disagree` int(8) default NULL,
  `date` varchar(40) NOT NULL,
  `top` int(8) default NULL,
  `Reserve1` varchar(128) default NULL,
  `Reserve2` varchar(128) default NULL,
  PRIMARY KEY  (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for bbsmessage
-- ----------------------------
DROP TABLE IF EXISTS `bbsmessage`;
CREATE TABLE `bbsmessage` (
  `uuid` varchar(36) NOT NULL,
  `username` varchar(32) NOT NULL,
  `content` varchar(512) NOT NULL,
  `imageheadurl` varchar(256) default NULL,
  `agree` int(8) default NULL,
  `disagree` int(8) default NULL,
  `share` int(8) default NULL,
  `address` varchar(40) default NULL,
  `date` varchar(40) NOT NULL,
  `top` int(8) default NULL,
  `phonemodel` varchar(32) default NULL,
  `Reserve1` varchar(128) default NULL,
  `Reserve2` varchar(128) default NULL,
  PRIMARY KEY  (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` varchar(36) NOT NULL,
  `name` varchar(32) NOT NULL,
  `course` varchar(64) NOT NULL,
  `score` int(11) NOT NULL,
  `remarks` varchar(512) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for userinfo
-- ----------------------------
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
  `uuid` varchar(36) NOT NULL,
  `username` varchar(32) NOT NULL,
  `password` varchar(16) NOT NULL,
  `imageheadurl` varchar(256) default NULL,
  `level` int(8) NOT NULL,
  `registertime` varchar(40) NOT NULL,
  `Reserve1` varchar(128) default NULL,
  `Reserve2` varchar(128) default NULL,
  PRIMARY KEY  (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4.部署SSH项目
在部署之前,我们需要注意的是:
4.1.数据库的配置
主要是url和用户名密码的配置:

jdbc.mysql.url=jdbc:mysql://w.rdc.sae.sina.com.cn:3307/app_XXXXXX
jdbc.mysql.username=Access Key
jdbc.mysql.password=Secret Key

4.2.数据库连接的配置
第一次上传代码之后,出现“Could not open Hibernate Session for transaction”错误,为了解决这个问题,我们需要在数据库连接池中添加配置信息

<!--创建mysql jdbc数据源 -->
	<bean id="c3p0dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="${jdbc.mysql.driver}" />
		<property name="jdbcUrl" value="${jdbc.mysql.url}" />
		<property name="user" value="${jdbc.mysql.username}" />
		<property name="password" value="${jdbc.mysql.password}" />
		<property name="testConnectionOnCheckin" value="true" />
		<property name="testConnectionOnCheckout" value="true" />
	</bean>

这里需要注意的就是testConnectionOnCheckin和testConnectionOnCheckout


另外,还有一个需要注意的是sessionFactory,
增加
<prop key="hibernate.autoReconnect">true</prop>
配置
例如:

<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource" ref="c3p0dataSource" />
		<property name="hibernateProperties">
			<props>
			    <prop key="hibernate.autoReconnect">true</prop>
				<prop key="hibernate.show_sql">false</prop>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="current_session_context_class">thread</prop>
			</props>
		</property>
		...
</bean>

4.3.还需要注意的是,Hibernate的.hbm.xml文件,如果是MyEclipse自动生成的,它会有一个叫做“catalog”的字段,
最好将该字段删除。因为本地调试的数据库名称和SAE上的数据库名称有可能不一样。


5.打包上传
上述配置完成之后,使用MyEclipse,将项目Export成.war包,名称与app的名称一致,比如XXXXXX.war,然后上传到SAE空间

技术分享

图 4

过一段时间(半分钟),我们就可以访问XXXXXX.sinaapp.com来查看部署的项目是否能够成功运行了。

至此,这个SSH项目就在sinaapp上部署成功了。


6.域名的绑定

新浪上的域名为二级域名,那我们怎么将二级域名与我们购买的一级域名绑定呢?

我一般在万网买域名,买完域名之后,需要个人身份的登记和认证,然后就可以解析了。

首先在SAE中“应用首页”,独立域名中,点击“绑定”独立域名:输入需要绑定的域名,然后会弹出如下对话框:

技术分享

图 5

注意,被圈起来的内容,是我们在域名解析中用到的。

打开万网的解析页面,根据SAE的提示,在解析页面添加正确的CNAME信息和A记录信息。

比如,下面是我的某个域名的解析截图:

技术分享

域名的绑定一般1分钟左右生效。


未经允许,不得用于商业目的


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。