标签: apache-commons-digester

你何时以及为什么要使用Apache commons-digester?

在用java输入和输出xml的所有库中,在哪些情况下,commons-digester是首选工具?

java apache-commons-digester

11
推荐指数
2
解决办法
6512
查看次数

Struts2和Tiles:当apache.org关闭时,我的webapp无法启动

我正在构建一个使用磁贴的Struts2 Web应用程序但是我发现了一个非常令人沮丧的问题,即如果apache.org关闭(这似乎经常发生)Web应用程序无法启动.这是因为在其标准设置中,StrutsTilesListener尝试加载tiles defenitions文件,该文件包含一个带有public-id的DOCTYPE,该公共id指向位于tiles.apache.org上的DTD.

当应用程序启动时,使用Apache Xerces通过Apache Commons Digester加载定义文件,该文件尝试从tiles.apache.org加载DTD但是如果apache.org关闭则会失败并且随之而来的是整个Web应用程序无法启动.

我可以通过下载文件并将其置于本地并在struts定义文件中指定新的本地位置来绕过远程位置的下载,但是这个解决方案不是很便携,因为本地保存DTD的位置可能会有所不同开发人员机器和不同的一旦上传到实时环境,所以我将不得不继续编辑位置,以便运行webapp运行的机器,这简直是烦人的.

项目中没有其他xml文件存在此问题,包括struts.xml文件,该文件在apache.org上也有DTD位置,所以很明显存在一个设置问题,其中Tiles严格要求DTD但其他组件不是.这有什么解决方案吗?我已经没有耐心了,我不能把这个webapp知道,如果我重新启动apache.org,那么webapp就不会再回来了.

Struts tile defenition文件

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>
    <definition name="master" template="/tiles/templates/master.jsp">
    </definition>
    <definition name="public" extends="master">
        <put-attribute name="header" value="/tiles/templates/public/header.jsp" />
        <put-attribute name="footer" value="/tiles/templates/public/footer.jsp" />
        <put-attribute name="templateMeta" value="/tiles/templates/public/meta.jsp" />
    </definition>  
</tiles-definitions>
Run Code Online (Sandbox Code Playgroud)

当apache.org关闭时,堆栈跟踪

SEVERE: Exception sending context initialized event to listener instance of class org.apache.struts2.tiles.StrutsTilesListener
java.lang.IllegalStateException: Unable to instantiate container.
    at org.apache.tiles.web.startup.TilesListener.contextInitialized(TilesListener.java:60)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) …
Run Code Online (Sandbox Code Playgroud)

java dtd struts2 xerces apache-commons-digester

4
推荐指数
1
解决办法
2万
查看次数

如何不登录Digester?

嘿伙计们,我是这个论坛的新手.乍一看这个社区看起来很棒.我有一个简单的问题.我正在使用log4j进行日志记录,并且是tomcat的新手.我找到了设置日志规则的文件,filename:server.log4j-console.properties我用它来不记录BATCH.debug.log中的所有消化器

这是server.log4j-console.properties中的代码:

# eposerver logger configuration
log4j.rootLogger=DEBUG, debug-file, console
log4j.logger.systrace=DEBUG, systrace-file
log4j.logger.apptrace=DEBUG, apptrace-file
log4j.logger.ntlogger=INFO, nt-events
log4j.logger.httpclient.wire=INFO
log4j.logger.org.apache.commons.httpclient=INFO

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{2}<%M:%L> -  %m%n

log4j.appender.debug-file=org.apache.log4j.RollingFileAppender
log4j.appender.debug-file.layout=org.apache.log4j.PatternLayout
log4j.appender.debug-file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{2}<%M:%L> -  %m%n
log4j.appender.debug-file.File=${EPO_JAVA_DIR}/apps/var/logs/server/debug.log
log4j.appender.debug-file.MaxFileSize=2MB
log4j.appender.debug-file.MaxBackupIndex=500

log4j.appender.systrace-file=org.apache.log4j.RollingFileAppender
log4j.appender.systrace-file.layout=org.apache.log4j.PatternLayout
log4j.appender.systrace-file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{2}<%M:%L> -  %m%n
log4j.appender.systrace-file.File=${EPO_JAVA_DIR}/apps/var/logs/server/systrace.log
log4j.appender.systrace-file.MaxFileSize=1MB
log4j.appender.systrace-file.MaxBackupIndex=100

log4j.appender.apptrace-file=org.apache.log4j.RollingFileAppender
log4j.appender.apptrace-file.layout=org.apache.log4j.PatternLayout
log4j.appender.apptrace-file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{2}<%M:%L> -  %m%n
log4j.appender.apptrace-file.File=${EPO_JAVA_DIR}/apps/var/logs/server/apptrace.log
log4j.appender.apptrace-file.MaxFileSize=1MB
log4j.appender.apptrace-file.MaxBackupIndex=100

log4j.appender.nt-events=org.apache.log4j.nt.NTEventLogAppender
log4j.appender.nt-events.layout=org.apache.log4j.PatternLayout
log4j.appender.nt-events.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{2}<%M:%L> -  %m%n0
log4j.appender.nt-events.source=eposerver
Run Code Online (Sandbox Code Playgroud)

你可以告诉我我是Tomcat的新手,我假设这可以在几行中完成!

java logging tomcat log4j apache-commons-digester

2
推荐指数
1
解决办法
3756
查看次数

如何使用公共Digester解析xml文件并使其填充java.util.Date对象?

示例XML.

<person>
  <name>Joe Dirt</name>
  <ssn>123-45-6789</ssn>
  <dob>07/04/1981</dob>
</person>
Run Code Online (Sandbox Code Playgroud)

示例Java类

public class Person(){
  private String name;
  private String ssn;
  private java.util.Date dob;
.....
}
Run Code Online (Sandbox Code Playgroud)

Sample Digester规则

<?xml version="1.0"?>
<digester-rules>
  <pattern value="message">
      <object-create-rule classname="Person" />
      <bean-property-setter-rule pattern="name" propertyname="name" />
      <bean-property-setter-rule pattern="ssn" propertyname="ssn" />
      <bean-property-setter-rule pattern="dob" propertyname="dob" />
 </pattern>
</digester-rules>
Run Code Online (Sandbox Code Playgroud)

java apache-commons-digester

1
推荐指数
1
解决办法
4699
查看次数

标签 统计

apache-commons-digester ×4

java ×4

dtd ×1

log4j ×1

logging ×1

struts2 ×1

tomcat ×1

xerces ×1