◎筱米加步枪◎.Blog

Happy coding

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

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

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

build.properties文件
1
2
3
4
5
6
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
build.xml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<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下成功的将想要的信息写到文件里去了~~

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

Jboss下的log4j配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!-- ###
        ### 输出方式是 文件 的形式输出 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

 

样例如下:

1
2
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

如图: