前两天 装了个cassandra的服务端,cli下运行,建立keysapce,clomun family,再show 一切都正常。看似可以了,也就没有怎么在意它的配置,比如conf/cassandra.yaml文件。
今天想利用它提供的一个客户端程序做一个简单的增删改操作。先不管具体的表关联怎么实现,先跑起来一个客户端demo吧。
结果一上来就出现一个socket错误,这个肯定是没有连上服务端(虚拟机)里面的cassandra。
dos下ping ip,能通。不解其中原因,上网查了一下,有个外国网站上说如果想远程调用 conf/cassandra.yaml文件需要修改,
具体的就是把listen_address: localhost改为本地ip.具体原因也没有说清楚。
改完果然ok.
在去运行cassandra自带的例子,地址栏输入http://10.1.54.2:8983/portfolio/(注:10.1.54.2是装cassandra的机器,也就是我的虚拟机),
也报socket错误,内容和之前的一模一样,很可能是连接数据库问题、。很可能是demo中连接地址,写的是localhost. 。
在下载的例子中找portfolio的源码,找不到,反编译,搜索。果然在com.datastax.demo.portfolio.controller.PortfolioMgrHandler中有一处localhost.
还有另一处PortfolioMgrHandler也出现一个localhost连接服务器的代码、
很显然这个地方处理的不好,地址硬编码了,想修改地址很麻烦。
不清楚为什么有两个包下出现.PortfolioMgrHandler类。这个明天继续看下————今天还要一些手头任务。
第一想到的解决办法 就是反编译修改代码中的ip即"localhost"
修改代码,改读取property文件中的配置。下面是编译写的文件,dos下javac,出现一大堆找不到类的错误。这个麻烦,好像需要在编译路径下添加java类库。
想要eclipse帮我编译,可以根据提示导入相应包。可惜gui的错误率实在太高,错误多到没法去手动修改。
哎。还是修改ip映射吧,即localhost和我的地址(10.1.54.2)对应起来,查了一下是在、etc/hosts里面修改。改完,http://10.1.54.2:8983/portfolio/可以出现数据。
总结一下,为了跑通这个例子portfolio,前后走了不少弯路,也是在弯路中学到了很多东西,比如熟悉了linux系统内部文件,复习了java的编译,学习了cassandra的客户端