◎筱米加步枪◎.Blog

Happy coding

使用Ant生成JBoss上部署项目的脚本

用Ant脚本打包部署项目,生成Jboss上部署后的文件信息.(跟MyEclipse部署到Jboss的效果一样)

搞了一天多..Ant不是很熟..贴个备忘下..

svn.lib.path=../../lib
svn.dist.path=../../dist
svn.target.lib=${svn.dist.path}/lib
svn.target.deploy=${svn.dist.path}/deploy
target.war.file=${svn.target.deploy}/EFrameWeb.war
busi.jars=e_workflowclient.jar,jbpmengineclient.jar
<project basedir="." default="deploy" name="EFrameWeb">
	<property environment="env" />
	<!-- 引用属性文件的属性定义 -->
	<property file="build.properties" />

	<property name="debuglevel" value="source,lines,vars" />
	<property name="target" value="1.6" />
	<property name="source" value="1.6" />
	<!-- 定义WebRoot路径 -->
	<property name="WebRoot.dir" value="${basedir}/WebRoot"/>
	<!-- 定义编译路径 -->
	<property name="compile.dir" value="${WebRoot.dir}/WEB-INF/classes"/>
	<!-- 定义源代码路径 -->
	<property name="src.dir" value="${basedir}/src"/>
	<!-- 定义项目所用到的其他包 -->
	<property name="lib.dir" value="${WebRoot.dir}/WEB-INF/lib"/>
	
	<!-- 定义生成的war包的classes路径 -->
	<property name="target.war.file.classes" value="${target.war.file}/WEB-INF/classes"/>
	<!-- 定义生成的war包的lib路径-->
	<property name="target.war.file.lib" value="${target.war.file}/WEB-INF/lib"/>
	
	
	<path id="appAPI.classpath">
		<!-- 包含项目中涉及到的业务包和工具包 -->
		<fileset dir="${svn.target.lib}">
			<include name="**/*.jar"/>
		</fileset>
		
		<!-- 包含项目中涉及到第三方开源包 -->
		<fileset dir="${svn.lib.path}">
			<include name="**/*.jar" />
		</fileset>
		
		<!-- 包含存在项目自身lib目录下的包 -->
		<fileset dir="${lib.dir}">
			<include name="**/*.jar" />
		</fileset>
	</path>
	<target name="clean">
		<delete dir="${compile.dir}" />
		<delete dir="${target.war.file}/" />
	</target>
	<target name="init" depends="clean">
		<mkdir dir="${target.war.file}" /> 
		<mkdir dir="${compile.dir}" />
		
		<!-- 属性信息 -->
		<echo message="${ant.project.name}: ${ant.file}" />
		
		<!-- 编译程序 -->
		<javac debug="true" 
			   includeantruntime="false" 
			   debuglevel="${debuglevel}" 
			   encoding="GBK" 
			   destdir="${compile.dir}" 
			   source="${source}" 
			   target="${target}">
			<src path="${src.dir}" />
			<classpath refid="appAPI.classpath" />
		</javac>
		
		<!-- 拷贝WebRoot下的东西 -->
		<copy includeemptydirs="false" todir="${target.war.file}">
			<fileset dir="${WebRoot.dir}">
				<exclude name="**/.svn" />
				<exclude name="**/*.launch" />
			</fileset>

		</copy>
		
		<!-- 拷贝项目classses非编译文件 -->
		<copy includeemptydirs="false" todir="${target.war.file.classes}">
			<fileset dir="${src.dir}">
				<exclude name="**/*.launch" />
				<exclude name="**/*.java" />
				<exclude name="**/.svn" />
			</fileset>
		</copy>

		<!-- 拷贝项目所依赖的业务包 -->
		<copy includeemptydirs="false" todir="${target.war.file.lib}">
			<fileset dir="${svn.target.lib}" includes="${busi.jars}"/>
		</copy>
	</target>

	<target name="deploy" depends="init"></target>
</project>

 

关于Jboss4.3只能通过localhost访问不能通过IP访问的解决方法。

超郁闷的,搞了一个下午。来看看问题描述:

做两个东东之间实现对发的东西,结果总是报java.net.ConnectException: Connection refused: connect的错误,原先是Servlet地址有误,但是实在不知道是哪儿错了,于是就用IE访问了下,发现显示“网页无法显示”,难怪发数据给Servlet不成功,后来百度了许久,才发现原来Jboss4.3默认是不支持IP访问的,便得到方法:

方法一:如果你是用MyEclipse为开发工具的话,按照如下地址进行解决(还有以前有记录,换了个工作空间就忘记配置了,囧~~)http://cst.is-programmer.com/posts/16109.html

方法二:在你的Jboss中打开server\default\deploy\jboss-web.deployer\server.xml这个文件,把Connector结点的address地址改成0.0.0.0或者你自己的IP就可以了..

JBoss下的log4j 配置

搞了一个上午~~终于在Jboss下成功的将想要的信息写到文件里去了~~

贴个相关配置以及解释~~

<!-- ###
		### 输出方式是 文件 的形式输出 DailyRollingFileAppender 是每天一个文件 
		### 拓展:log4j输出方式有5种,分别是:
		###	1.org.apache.log4j.ConsoleAppender(控制台)
		### 2.org.apache.log4j.FileAppender(文件)
		### 3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
		### 4.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
		### 5.org.apache.log4j.RollingFileAppender(每次都产生一个日志文件)
		### -->
   <appender name="FileRequest" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

	  <!-- ### 指定文件的路径 -->
      <param name="File" value="${jboss.server.log.dir}/sendRequest.log"/>

	  <!-- ### 在重启服务时,设置是否往原有记录继续添加.
	       ### true:继续添加 false:删除掉原来的再添加 -->
      <param name="Append" value="false"/>

	  <!-- ### 类似于过滤器,把低于指定日志级别的日志不显示出来
	       ### 日志级别从高到低:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL -->
	  <param name="Threshold" value="DEBUG"/>  

	  <!-- Rollover at midnight each day -->
      <param name="DatePattern" value="'.'yyyy-MM-dd"/>   

	  <!-- ### 配置日志的输出格式
		   ###%m 输出代码中指定的消息
		   ###%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
		   ###%r 输出自应用启动到输出该log信息耗费的毫秒数
		   ###%c 输出所属的类目,通常就是所在类的全名
		   ###%t 输出产生该日志事件的线程名
		   ###%n 输出一个回车换行符
		   ###%d 输出日志时间点的日期或时间{yyyy-MM-dd HH:mm:ss,SSS}
	       ###%l 输出日志事件的发生位置,包括类目名|发生线程|在代码中的行数 -->
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{HH:mm:ss} %m%n"/>
      </layout>
   </appender>


   <!-- ### 定义日志名
        ### additivity 是设置是否继承标志父类输出源的标志
		### true:会在父输出源中输出 false:只会在自己定义的输出源输出-->
   <category name="com.shine.proxy.SendRequest" additivity="false">
        <!-- ###定义输出级别 -->
        <priority value="DEBUG" />
		<!-- ###定义引用的Appender -->
		<appender-ref ref="FileRequest"/>
   </category>

   <!--
     ### 对于上一段,还可以有如下写法:
		 <logger name="com.shine.proxy.SendRequest" additivity="false">
			<level value="DEBUG" />
			<appender-ref ref="FileRequest"/>
		 </logger>
     -->

英文操作系统Windows上Jboss控制台显示中文问题

在公司的服务器上(英文版widows Server 2003)跑Jboss(即运行run.bat)

因为日志输入带有中文日志,所以在显示的时候 显示乱码,榕哥找到的方法:解决方法如下:

 

在Jboss的run.bat文件中,编辑在设置Java参数(即SET_OPTS)后面加

-Ddefault.client.encoding=GBK -Dfile.encoding=GBK -Duser.language=Zh

 

样例如下:

set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m -XX:MaxPermSize=256m -Ddefault.client.encoding=GBK -Dfile.encoding=GBK -Duser.language=Zh 
-server

MyEclipse中Jboss启动出现Java heap space解决方案

今日,在自己的电脑上跑公司的平台,在MyEclipse中启动JBOSS,结果报:

java.lang.OutOfMemoryError: Java heap space 异常,用jboss中的run.bat启动,则正常运行,而在MyEclipse中启动就报异常,百度之~~得解:

原因是对于很大的Web工程(公司的这个平台确实够大),jboss默认分配空间无法启动,因此出现了内存溢出,因此需要去设置Java虚拟机的堆栈大小,

所以解决方法如下:

1.设置环境变量:set JAVA_OPTS= -Xms512m -Xmx1024m

但是如果在MyEclipse中启动Jboss的话还要进行如下操作:

window>>preferences>>MyEclipse>>Application Servers>>JBoss>>JBoss x.x>>JDK中的【Optional Java VM arguments】中添加如下字符串:

-Xmx1024M -Xms512M -XX:MaxPermSize=256m

点击OK即可解决~~(偶是这么解决的~~)

如图:

如果还不行,继续如下操作:(良哥教的~~)

window>>preferences>>MyEclipse>>Application Servers>>JBoss>>JBoss x.x中的【Optional program arguments】中添加如下字符串:

-c default -b 0.0.0.0

如图: