最近处于学习的目的,开始接触Jboss,了解了一些知识吧,然后想拿它来开发一个东西的时候,遇到了一些问题……
先从官网上下载Jboss的5.1版本,网站上已经有6.0版本了,但我看他网站上的文档,好像只更新到5.1版本,那就先把别搞最新的了,弄一个比较稳定的也好,恩。
废话少活,下载,解压,设置环境变量(JBOSS_HOME),运行bin下的run.bat。OK启动成功~~
接下来是把它嵌入到Eclipse中去,也去下载一个新的Eclipse吧,不能太out了,呵呵。
一看不要紧,nnd已经是Galileo 版本了,还“JEE”,要知道我还一直用老古董3.2的呢……世界变化真快啊。
还是少废话,就用这个了:eclipse-jee-galileo-SR1-win32
太具体的操作我就不说了,反正去设置Server -> add。然后可以选好多服务器类型,支持的还不少,Tomcat,IBM WebSphere,Jboss什么的,都集成了,省的到处找插件了~~
按照向导设置一个Jboss服务器应该是很简单的事情,也很快,但是一点“start“问题就来了……
13:54:15,357 INFO [ServerInfo] VM arguments: -Dprogram.name=run.bat -Xms128m -Xmx512m -XX:MaxPermSize=256m -Dfile.encoding=GBK
13:54:15,399 INFO [JMXKernel] Legacy JMX core initialized
13:54:16,914 ERROR [AbstractKernelController] Error installing to Instantiated: name=AttachmentStore state=Described
java.lang.IllegalArgumentException: Wrong arguments. new for target java.lang.reflect.Constructor expected=[java.net.URI] actual=[java.io.File]
at org.jboss.reflect.plugins.introspection.ReflectionUtils.handleErrors(ReflectionUtils.java:395)
at org.jboss.reflect.plugins.introspection.ReflectionUtils.newInstance(ReflectionUtils.java:153)
……………………
baidu了一下,貌似也没什么解决方案,都说什么Jboss目录不能有中文,甚至不能有空格……我看都和这个问题无关。我的目录满足那些要求,但还是报错……到底怎么回事呢……郁闷死了,直接运行run.bat是没问题的。
仔细看看log,报的是有一个bean初始化出错,AttachmentStore,他是罪魁祸首……要我自己解决还是不太可能,呵呵,毕竟才接触jboss,没办法,继续搜,看看谷老师有(google)什么答案……
果然啊,看到了一片国外的文章,大概说了说这个问题的原因。
原文是:there are multiple constructors available for org.jboss.system.server.profileservice.repository.AbstractAttachmentStore. MC randomly picks up one of the available constructors and this can lead to exceptions as noted in the referenced forum thread.
大概就是说,在初始化AttachmentStore的时候有好几个构造函数,它随即选择了一个(汗),所以才会产生那个问题。
解决方法,修改/jboss-5.1.0.GA/server/default/conf/bootstrap/下的profile.xml。
修改后的片段,红色部分是和原来不一样的地方:
<!-- The attachment store -->
<bean name="AttachmentStore" class="org.jboss.system.server.profileservice.repository.AbstractAttachmentStore">
<constructor><parameter class="java.io.File"><inject bean="BootstrapProfileFactory" property="attachmentStoreRoot" /></parameter></constructor>
<property name="mainDeployer"><inject bean="MainDeployer" /></property>
<property name="serializer"><inject bean="AttachmentsSerializer" /></property>
<property name="persistenceFactory"><inject bean="PersistenceFactory" /></property>
</bean>
再次用Eclipse启动,慢慢看到向正常发展了,一行一行慢慢出log……忽然又弹出一个对话框,说启动失败,“Server JBoss v5.0 at localhost was unable to start within 50 seconds. If the server requires more time, try increasing the timeout in the server editor.”大致原因是说“服务器在50秒以内没有启动成功”……看了这个错我想骂娘,呵呵,哪里设置的50秒,找找,估计是eclipse,因为在外面运行run.bat是没问题的,而且是一分钟多一点的时间。
找找,果然啊,找到个timeout选项,默认的是50,看来我的机器没有达到他们预期的性能……没办法,改大一些吧。
再次运行,ok,终于见到页面了。
我的文章好像图片较少,原谅吧~~主要目的还是为了记录一下自己的学习经历,也为一些需要帮助的人们提供一些资料,不是入门教程~呵呵,大家一起慢慢进步吧……