小编Ing*_*her的帖子

JSF:无法捕获ViewExpiredException

我正在Glassfish v3上开发一个JSF 2.0应用程序,我正在尝试处理ViewExpiredException.但无论我做什么,我总是得到一个Glassfish错误报告,而不是我自己的错误页面.

为了模拟VEE的发生,我将以下函数插入到我的支持bean中,它会激活VEE.我通过commandLink从我的JSF页面触发此函数.代码:

@Named
public class PersonHome {
  (...)
  public void throwVEE() {
    throw new ViewExpiredException();
  }
}
Run Code Online (Sandbox Code Playgroud)

起初我只是通过向我的web.xml添加错误页面来尝试它:

<error-page>
  <exception-type>javax.faces.application.ViewExpiredException</exception-type>
  <location>/error.xhtml</location>
</error-page>  
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我没有被重定向到错误,但我显示了Glassfish错误,它显示了HTTP状态500页面,其中包含以下内容:

description:The server encountered an internal error () that prevented it from fulfilling this request.
exception: javax.servlet.ServletException: javax.faces.application.ViewExpiredException
root cause: javax.faces.el.EvaluationException:javax.faces.application.ViewExpiredException
root cause:javax.faces.application.ViewExpiredException
Run Code Online (Sandbox Code Playgroud)

我尝试的下一件事是编写ExceptionHandlerFactory和一个CustomExceptionHandler,如JavaServerFaces 2.0 - 完整参考中所述.所以我将以下标记插入faces-config.xml:

<factory>
  <exception-handler-factory>
    exceptions.ExceptionHandlerFactory
  </exception-handler-factory>
</factory>
Run Code Online (Sandbox Code Playgroud)

并添加了这些类:工厂:

package exceptions;

import javax.faces.context.ExceptionHandler;

public class ExceptionHandlerFactory extends javax.faces.context.ExceptionHandlerFactory {

    private javax.faces.context.ExceptionHandlerFactory parent;

    public ExceptionHandlerFactory(javax.faces.context.ExceptionHandlerFactory parent) {
        this.parent = parent;
    } …
Run Code Online (Sandbox Code Playgroud)

java jsf jsf-2 viewexpiredexception

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

将Scala缓冲区转换为Java ArrayList

在我的Scala函数中,我遍历Java ArrayCollection,提取应该构成新集合的特定元素.最后,它必须再次成为Java-ArrayList,因为我正在与Java Framework交互.我的代码:

// to make scala-style iterating over arraylist possible
import scala.collection.JavaConversions._

// ArrayList contains elements of this type:
class Subscription(val subscriber:User, val sender:User)

// I'm getting this list from Java:
val jArrayList = new ArrayList[Subscription]
// Buffer:scala.collection.mutable.Buffer[User]
val buffer = for (val subscription <- jArrayList ) yield subscription.sender
Run Code Online (Sandbox Code Playgroud)

如何将Buffer转换为ArrayList [User]?或者我不应该在这里使用收益率?

java scala scala-2.8

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

部署为仅限WAR的EJB 3.1应用程序:ejb-jar.xml怎么样?

我有一个JavaEE6应用程序,由Web东西和EJB组成,并且部署为仅使用WAR(使用EJB3.1).构建基于Maven.我刚刚看了一下新的可能命令在Java EE 6的初始化模块在这里,我还需要我的应用程序.此外,我想有一个选项来定义XML中的一些EJB属性.

由于该示例是作为EAR项目部署的,因此订单在application.xml中定义.但是在WAR部署的项目中,没有application.xml.现在我想知道我可以在哪里定义这样的信息?或者是否可以在WAR-deployed-app中以某种方式使用application.xml?

编辑:

哎呀我没有正确读取模块顺序示例,在第一时间我认为它是关于我的应用程序中的EJB加载的顺序.当然我的WAR-app中只有一个模块,所以排序没有意义.

好吧,但就我而言,一个大问题仍然存在(也改变了问题标题以反映变化):ejb-jar.xml怎么样?我可以用XML以某种方式定义关于我的EJB的东西(因为它对某些设置有用,以避免重新编译)?

java java-ee java-ee-6 ejb-3.1

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

从Java源文件中获取类注释

我正在解析Java源文件以收集有关我的类的各种信息.因此我正在使用JavaParser,因为我找不到一个好的替代方案(好的建议有机会成为"答案")来解析源文件.

我已经设法从我的班级获得所有方法的注释.代码如下所示:

package de.mackaz;

import japa.parser.JavaParser;
import japa.parser.ParseException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import japa.parser.ast.CompilationUnit;
import japa.parser.ast.body.MethodDeclaration;
import japa.parser.ast.expr.AnnotationExpr;
import japa.parser.ast.expr.MarkerAnnotationExpr;
import japa.parser.ast.expr.MemberValuePair;
import japa.parser.ast.expr.NormalAnnotationExpr;
import japa.parser.ast.visitor.VoidVisitorAdapter;
import java.io.FileInputStream;

public class JavaSourceUtils {

    public static void main(String[] args) throws Exception {
        File f = new File("/home/mackaz/SourceFile.java");
        inspectJavaFile(f);
    }

    public static void inspectJavaFile(File pFile) 
    throws FileNotFoundException, ParseException, IOException {
        CompilationUnit cu;
        FileInputStream in = new FileInputStream(pFile);
        try {
            cu = JavaParser.parse(in);
        } finally {
            in.close();
        }
        new MethodVisitor().visit(cu, …
Run Code Online (Sandbox Code Playgroud)

java parsing code-analysis annotations

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

从IDE中运行远程服务器上的TestNG/JUnit集成测试

在我的IDE(Eclipse或NetBeans,无所谓)中,我有一些TestNG测试类(但我的问题也指远程JUnit测试),它们是Integration测试.这些测试需要集成服务器才能运行,它们无法在本地计算机上运行.他们需要集成服务器的完整环境 - 不仅仅是JavaEE容器相关的东西(=>没有Arquillian,也没有JEEUnit).

现在我希望能够在我的IDE(Eclipse)中运行这些测试 - 最好使用TestNG插件 - 但是当我启动它们时,它们实际上应该在远程集成服务器上运行.

是否可以从我的IDE中启动远程服务器上的集成测试?我喜欢在远程服务器上安装某种代理的想法,它等待测试请求并执行它们.但正如我所说,如果从TestNG插件内部运行它会很好.

我是否需要某种解决方法,例如Ant脚本(希望不是)或某些Maven魔法?什么是最佳做法?

我知道我也可以为我的应用程序创建Webservices,然后我可以从本地单元测试中调用它们.但我想知道是否还有没有Webservices的可能性.

java junit testng integration-testing java-ee

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

如何回滚所有打开的 PostgreSQL 事务

如何回滚特定数据库的所有打开的 postgres 事务?

我可以通过以某种方式组合这两个语句来做到这一点吗?

-- get transaction identifiers
SELECT gid FROM pg_prepared_xacts WHERE database='mydb';

-- rollback transaction by identifier
ROLLBACK PREPARED 'GID';
Run Code Online (Sandbox Code Playgroud)

postgresql

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

Maven:Build完成时触发自定义命令,取决于结果(成功/失败)

我在命令行上使用Maven,我的构建需要一段时间才能完成(1-2分钟).我正在寻找一种可能挂钩到构建的END并在构建完成时触发特定命令(由ant等启动程序) - 依赖于我的构建结果(成功/失败).

我的目标是我的计算机只播放一个声音(一个用于成功构建,另一个用于失败的构建),所以我会注意到我的构建完成了.

我能意识到这一点,以及如何实现?我想Ant是可能的,但我希望我也可以在没有Ant的情况下做到这一点.

java maven-2 maven

7
推荐指数
2
解决办法
2520
查看次数

将JPA实体命名为"Group"是不合法的吗?

我正在开发一个JEE6应用程序,使用JPA 2.0和Hibernate 3.5.2-Final作为Provider(和MySQL 5.1.41).我的应用服务器是Glassfish V3.0.1.我已经有一个有一些实体和关系的工作CRUD应用程序.

现在我添加了一个名为"Group"的(非常简单的)实体.实体类看起来像这样:

package model
//Imports...
@Entity
public class Group {
  @Id @GeneratedValue
  private Long id;

  @NotNull
  private String name;

  //Getters and Setters
}
Run Code Online (Sandbox Code Playgroud)

当然我也把它添加到了persistence.xml中,就像<class>model.Group</class>.我的persistence.xml在部署时删除并重新创建所有表.

因此,当我部署应用程序时,将生成除我的表组之外的所有实体的表.在hibernate日志中,我发现了以下错误(这不会阻止部署应用程序)

[#|2010-06-30T11:54:29.862+0200|INFO|glassfish3.0.1|org.hibernate.cfg.AnnotationBinder|_ThreadID=11;_ThreadName=Thread-1;|Binding entity from annotated class: model.Group|#]
[#|2010-06-30T11:54:29.862+0200|INFO|glassfish3.0.1|org.hibernate.cfg.annotations.EntityBinder|_ThreadID=11;_ThreadName=Thread-1;|Bind entity model.Group on table Group|#]
[#|2010-06-30T11:54:33.773+0200|SEVERE|glassfish3.0.1|org.hibernate.tool.hbm2ddl.SchemaExport|_ThreadID=11;_ThreadName=Thread-1;|Unsuccessful: create table Group (id bigint not null auto_increment, name varchar(255) not null, primary key (id))|#]
[#|2010-06-30T11:54:33.773+0200|SEVERE|glassfish3.0.1|org.hibernate.tool.hbm2ddl.SchemaExport|_ThreadID=11;_ThreadName=Thread-1;|You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right …
Run Code Online (Sandbox Code Playgroud)

orm hibernate jpa java-ee-6 jpa-2.0

7
推荐指数
2
解决办法
2573
查看次数

自定义Glassfish安全领域不起作用(无法找到LoginModule)

我正试图在Glassfish中使用自定义安全领域(我尝试了3.0.1 final和3.1 B33).我阅读了几乎所有关于此的教程,但它并不适用于我的系统.我收到了错误

Login failed: javax.security.auth.login.LoginException: unable to find LoginModule class: com.company.security.realm.CustomLoginModule
Run Code Online (Sandbox Code Playgroud)

在尝试登录时.

这就是我所做的:我创建了一个小Maven项目,其中包含所需的Realm类CustomRealm和相应的LoginModule,CustomLoginModule.我的pom.xml:

<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.mycompany</groupId>
  <artifactId>security.realm</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Custom JDBCRealm</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.glassfish.security</groupId>
        <artifactId>security</artifactId>
        <version>3.1-b33</version>
    </dependency>
  </dependencies>

  <build>
      <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <optimise>true</optimise>
                <debug>true</debug>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>    
      </plugins>
  </build>
</project>
Run Code Online (Sandbox Code Playgroud)

我的自定义领域类:

package com.company.security.realm;

import com.sun.appserv.security.AppservRealm;
import com.sun.enterprise.security.auth.realm.BadRealmException;
import com.sun.enterprise.security.auth.realm.InvalidOperationException;
import com.sun.enterprise.security.auth.realm.NoSuchRealmException;
import com.sun.enterprise.security.auth.realm.NoSuchUserException;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;

public class CustomRealm extends AppservRealm
{
    Vector<String> groups …
Run Code Online (Sandbox Code Playgroud)

security glassfish java-ee glassfish-3

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

使用pytest-django的自定义测试套件运行器

我想切换我的Django(版本1.6x)应用程序pytest-django用于测试.因此我通过pip安装了最新的pytest-django并获得了以下版本:

pytest==2.6.4
pytest-django==2.7.0
Run Code Online (Sandbox Code Playgroud)

使用常规django测试,我使用扩展DjangoTestSuiteRunner的自定义测试套件运行器,我在settings.py中配置:

settings.py:

TEST_RUNNER = "dcmanager.tests.runner.ManagedModelTestRunner"
Run Code Online (Sandbox Code Playgroud)

runner.py:

import unittest

from django.conf import settings
from django.db.models import get_app, get_apps
from django.test.simple import DjangoTestSuiteRunner, build_test, build_suite, runner


class ManagedModelTestRunner(DjangoTestSuiteRunner):
    """
    Test runner that automatically makes all unmanaged models in
    project managed for the duration of the test run and patches VStorage model,
    so that one doesn't need to execute the SQL manually to create them.
    """
    IGNORE_TESTS = ['django', 'rest_framework', 'rest_framework_swagger']

    def build_suite(self, test_labels, extra_tests=None, **kwargs):
        suite = …
Run Code Online (Sandbox Code Playgroud)

python django pytest

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