栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

EJB3.1重新登录

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EJB3.1重新登录

这看起来非常接近此线程中描述的问题,我怀疑存在类似的类加载问题。由于logback加载的方式

logback.xml
(更确切地说是它获取a的方式
ClassLoader
),它可能无法获取其配置文件并退回default
BasicConfiguration

不确定如何打包代码,但是建议的解决方法是将

logback.xml
EAR库中包含。如果您不使用EAR包装,请尝试标识用于查看将
logback.xml
文件放置在何处的类加载器。

最后,这可能是登录后的问题。不过没有检查他们的问题跟踪器。

更新: 如果使用战争包装,请尝试将GlassFish配置为在委托之前先使用子类加载器。在

sun-web.xml

<sun-web-app>  <class-loader delegate="false"/></sun-web-app>

更新: 我做了一些测试,但是…我无法重现您的问题。我为Java EE 6 Webapp创建了一个项目,该项目具有以下结构:

$树样本样品|-pom.xml`-src    `-主要        |-Java        | `-com        | `-stackoverflow        | `-q2418355        | |-SimpleEJB.java        | `-SimpleServlet.java        |-资源        | `-logback.xml        `-webapp |-meta-INF | `-MANIFEST.MF |-WEB-INF | `-lib `-index.jsp

我的pom.xml看起来像:

<?xml version="1.0" encoding="UTF-8"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  <modelVersion>4.0.0</modelVersion>  <groupId>com.stackoverflow.q2418355</groupId>  <artifactId>sample</artifactId>  <version>1.0-SNAPSHOT</version>  <packaging>war</packaging>  <name>sample Maven Webapp</name>  <url>http://maven.apache.org</url>  <dependencies>    <dependency>      <groupId>javax</groupId>      <artifactId>javaee-api</artifactId>      <version>6.0</version>      <scope>provided</scope>    </dependency>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.7</version>      <scope>test</scope>    </dependency>    <dependency>      <groupId>ch.qos.logback</groupId>      <artifactId>logback-classic</artifactId>      <version>0.9.18</version>    </dependency>    <dependency>      <groupId>org.slf4j</groupId>      <artifactId>slf4j-api</artifactId>      <version>1.5.11</version>    </dependency>  </dependencies>  <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-compiler-plugin</artifactId>        <version>2.0.2</version>        <configuration>          <source>1.6</source>          <target>1.6</target>        </configuration>      </plugin>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-war-plugin</artifactId>        <version>2.1-beta-1</version>        <configuration>          <failOnMissingWebXml>false</failOnMissingWebXml>        </configuration>      </plugin>    </plugins>    <finalName>sample</finalName>  </build></project>

的代码

SimpleEJB.java
是:

package com.stackoverflow.q2418355;import javax.ejb.Stateless;import org.slf4j.Logger;import org.slf4j.LoggerFactory;@Statelesspublic class SimpleEJB {    private static Logger logger = LoggerFactory.getLogger(SimpleEJB.class);    public String sayHello(String name) {        logger.debug(">> sayHello()");        logger.debug("<< sayHello()");        return "Hello " + name + "!!!";    }}

的代码

SimpleServlet.java
是:

package com.stackoverflow.q2418355;import java.io.IOException;import java.io.PrintWriter;import javax.ejb.EJB;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet(urlPatterns = { "/SimpleServlet" })public class SimpleServlet extends HttpServlet {    @EJB    SimpleEJB bean;    private static Logger logger = LoggerFactory.getLogger(SimpleServlet.class);    @Override    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {        logger.debug(">> doGet()");        PrintWriter out = response.getWriter();        out.println("<html><body>");        out.println("<h2>Serving at: " + request.getContextPath() + "</h2>");        out.println("<h2>Invoking EJB: " + bean.sayHello("Duke") + "</h2>");        out.println("</body></html>");        logger.debug("<< doGet()");    }}

的代码

index.jsp
是:

<html><body><h2>Hello World!</h2>Invoke the Servlet by clicking <a href="SimpleServlet">here</a>.</body></html>

和我的

logback.xml
样子:

<configuration>  <appender name="STDOUT" >    <layout >      <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>    </layout>  </appender>  <appender name="FILE" >    <File>/tmp/logs/testFile.log</File>    <Append>true</Append>    <layout >      <Pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</Pattern>    </layout>  </appender>  <logger name="com.stackoverflow.q2418355" level="TRACE"/>  <root level="debug">    <appender-ref ref="STDOUT" />    <appender-ref ref="FILE" />  </root></configuration>

logback.xml
被propertly加载和我碰到下面的跟踪调用Servlet时(从我的日志文件中获取):

10913 [http-thread-pool-8080-(1)] DEBUG com.stackoverflow.q2418355.SimpleServlet - >> doGet()10928 [http-thread-pool-8080-(1)] DEBUG com.stackoverflow.q2418355.SimpleEJB - >> sayHello()10928 [http-thread-pool-8080-(1)] DEBUG com.stackoverflow.q2418355.SimpleEJB - << sayHello()10932 [http-thread-pool-8080-(1)] DEBUG com.stackoverflow.q2418355.SimpleServlet - << doGet()

我也尝试过将EJB打包在自己的JAR中并部署在其中,

WEB-INF/lib
并获得相同的结果,它可以正常工作。你能发现明显的不同吗?也许上传您的应用程序的简化版本(错误报告BTW非常可能需要)。

我正在Eclipse 3.5(带有GlassFish v3插件)下运行GlassFish v3。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438289.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号