编辑3:它正在工作!长话短说:在glassfish lib文件夹中有:slf4j-api-1.5.8.jar和jlf4j-jdk14-1.5.8.jar!无论如何我把它们移到了在lib下创建的"旧"文件夹中,然后将以下内容复制到文件夹中:
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar jcl-over-slf4j-1.6.1.jar log4j-1.2.16.jar(就像我在课堂上的路径一样,但现在到了应用服务器,一切都按预期工作)
我也可以将log4j.xml文件放入glassfish中,但我只是将它留给我的应用程序,这样我就可以进行特定于应用程序的日志记录.
我将提供一个答案,重新修改问题,使其更有用(目前过多的信息没有用).
更新:我会自我回答,但已经等了很久.接受史蒂文斯回答,因为这是最有帮助的,同时搞清楚这一点.
以下是历史 ......
编辑 2:我不知道为什么,但它可能与glafish v3上部署有关.Glassfish使用Java Utility Logging,这里有一张图片http://blog.saddey.net/2010/03/27/how-to-deploy-a-grails-application-to-glassfish/以及一些Grails人员的描述让日志工作(不是我使用grails),也许使用jul更有意义,因为这个图表显示?
如果我在不删除app frist的情况下重新部署,我也会收到这些错误:
SEVERE: log4j:ERROR log4j called after unloading, see http://logging.apache.org/log4j/1.2/faq.html#unload.
SEVERE: java.lang.IllegalStateException: Class invariant violation
Run Code Online (Sandbox Code Playgroud)
编辑,我仍然卡住了:
Logging正在为Spring和Struts2工作,但是我无法使用log4j来打印出SQL(或其他任何东西),这很重要因为虽然我可以使用<property name="hibernate.show_sql" value="true"/>persistence.xml 来使用hibernate来打印SQL,这是显示的唯一方法SQL参数是通过日志记录,这对我来说至关重要.
为了更加清楚,当应用程序启动时会有一些与hibernate相关的信息消息,但是当我查询数据库时,没有显示任何内容.
因为我疯了,我会列出我的pom,log4j.xml,applicationContext.xml,如果我有时间,我会提供链接到我访问过的很多网站(包括SO Q&A).
的pom.xml
一个显而易见的问题是登录jar的位置是什么,答案是:jcl-over-slf4j-1.6.1.jar,slf4j-log4j12-1.6.1.jar,log4j-1.2.16.jar和slf4j-api-1.6 .1(我也排除了公共日志记录)...还尝试了jcl-over-slf4j,slf4j-api的1.5.8版本.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>PartGroupMaster</artifactId>
<version>2011.04.12</version>
<packaging>war</packaging>
<name>PartGroupMaster Web App</name>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
</properties>
<repositories>
<repository>
<id>JBoss Repo</id>
<url>http://repository.jboss.com/maven2</url>
<name>JBoss Repo</name>
</repository>
<repository>
<id>ibiblio mirror</id>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</repository> …Run Code Online (Sandbox Code Playgroud) 有一个类似的问题,但是接受的解决方案不适用(问题是由Spring MVC造成的,情况并非如此,因为在这个类似的问题中如此:Spring 3.1 + Hibernate 4.1 JPA,实体管理器工厂注册了两次)
为了清楚起见,我唯一的问题是警告实体管理器工厂的(emf)名称已注册两次,尽管有警告,但使用JPA时我没有任何问题。
那么,如果spring不这样做,那么如何在第一次加载emf名称?我应该/如何停止它?
环境:Glassfish v 3.1.1,Spring 3.1.1,JPA 2.0(Hibernate-entity-manager 4.1.0),Struts2
我收到以下警告:
WARN: HHH000436: Entity manager factory name (empsys) is already registered. If entity manager will be clustered or passivated, specify a unique value for property 'hibernate.ejb.entitymanager_factory_name'
Run Code Online (Sandbox Code Playgroud)
这是服务器日志的一部分(最后一行是警告,我砍掉了顶部,但其余部分是连续的):
INFO: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
INFO: HHH000412: Hibernate Core {4.1.0.Final}
INFO: HHH000206: hibernate.properties not found
INFO: HHH000021: Bytecode provider name : javassist
INFO: HHH000204: Processing PersistenceUnitInfo …Run Code Online (Sandbox Code Playgroud) 为了理解struts2如何加载其配置,我想显示将要呈现的JSP的路径.给出以下非常小的struts.xml:
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.ui.theme" value="simple" />
<package name="base" namespace="/">
<result-types>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
</result-types>
<action name="test" class="com.kenmcwilliams.badwebapp.action.Test">
<result>/WEB-INF/content/test.jsp</result>
</action>
</package>
</struts>
Run Code Online (Sandbox Code Playgroud)
我希望能够从操作中记录"/WEB-INF/content/test.jsp".鉴于以下行动:
package com.quaternion.badwebapp.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.PreResultListener;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Test extends ActionSupport {
//used for a sanity test on JSP
public String getMessage() {
return "From test";
}
@Override
public String execute() throws Exception {
System.out.println("ActionContext.getContext().getActionInvocation().getResultCode(): " + ActionContext.getContext().getActionInvocation().getResultCode());
ActionInvocation ai = ActionContext.getContext().getActionInvocation();
ai.addPreResultListener(new PreResultListener() { …Run Code Online (Sandbox Code Playgroud) 在尝试将列表属性添加到定义之前,我对tile 3.0.1没有任何问题.没有错误,定义也正确呈现,除了列表属性似乎不存在于JSP上.
我正在使用CompleteAutoloadListener加载切片,这里是web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<listener>
<listener-class>org.apache.tiles.extras.complete.CompleteAutoloadTilesListener</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>/index.action</welcome-file>
</welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)
以下是定义的外观(tiles-defs.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="head-default" template="/WEB-INF/template/head.jsp">
<put-list-attribute name="items">
<add-attribute value="/style/cssbase-min.css" />
<add-attribute value="/style/cssfonts-min.css" />
<add-attribute value="/style/cssreset-min.css" />
<add-attribute value="/style/grids-min.css" />
<add-attribute value="/style/style.css" />
</put-list-attribute>
</definition>
<definition name="default" template="/WEB-INF/template/template.jsp">
<put-list-attribute name="items" inherit="true"/>
<put-attribute name="head" value="head-default"/> …Run Code Online (Sandbox Code Playgroud) 我对Struts2中的拦截器有疑问
Struts2提供了非常强大的使用拦截器控制请求的机制.拦截器负责大多数请求处理.它们在调用动作之前和之后由控制器调用,因此它们位于控制器和动作之间.拦截器执行记录,验证,文件上传,双提防等任务.
我从以上几行开始:
http://viralpatel.net/blogs/2009/12/struts2-interceptors-tutorial-with-example.html
在此示例中,您将看到在执行操作之前和之后如何调用拦截器以及如何将结果呈现给用户.
我已经采取了以上这些线
http://www.vaannila.com/struts-2/struts-2-example/struts-2-interceptors-example-1.html
我编写了一个基本的拦截器并将其插入我的Action类:
public class InterceptorAction implements Interceptor {
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("Action class has been called : ");
return success;
}
}
Run Code Online (Sandbox Code Playgroud)
在struts.xml
<action name="login" class="com.DBAction">
<interceptor-ref name="mine"></interceptor-ref>
<result name="success">Welcome.jsp</result>
<result name="error">Login.jsp</result>
</action>
Run Code Online (Sandbox Code Playgroud)
根据他们网站上面的语句,我假设已经在控制台上调用了这一行Action类两次(那是在Action之前和Action类之后),但是它只打印了一次?
请告诉我,如果我的理解是错误的,或者作者在那个网站上错了?
我按照这里的说明操作:https://github.com/valor-software/ng2-dragula/wiki#5-min-quickstart以及这里:https://www.npmjs.com/package/ng2- dragula
Angular-quickstart正在运行,按照:
git clone https://github.com/angular/quickstart angular2-dragula-test
npm install
npm start
Run Code Online (Sandbox Code Playgroud)
"我的第一个Angular App"(在浏览器中弹出 - 所以一切正常)
我通过以下方式安装dragula:
npm install ng2-dragula dragula --save
Run Code Online (Sandbox Code Playgroud)
我用valor-software ng2-dragula wiki(第一个链接)的确切内容替换了quickstart文件.
如果有人可以提供任何建议(关于非关键的非上市步骤)或简单的健全性检查,将非常感激.