标签: glassfish-embedded

不能让SLF4J使用glassfish 4

我已经使用SLF4J JUL桥将glassfish 3配置为使用SLF4J并且它工作正常.我现在遇到的问题是,如果我使用相同的设置,SLF4J会抱怨类路径上存在重复的SLF4J绑定,并且在搜索之后,glassfish本身包含这些引用.

我如何让SLF4J工作?我尝试依赖提供的SLF4J-API,然后删除了LogBack Classic,因为glassfish已经包含一些logback代码.做这些事情不会产生任何成功的结果.

沃尔特

slf4j glassfish-embedded glassfish-4

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

嵌入式Glassfish,安全性和Arquillian问题

我想使用Arquillian在嵌入式Glassfish上测试我的EJB.

重要的是我必须保持安全性,因为我的bean逻辑执行一些编程安全检查(sessionContext.isCallerInRole(role)).

是否可以在嵌入式Glassfish上使用Arquillian模拟登录?

如何设置Embedded Glassfish以使用用户和角色属性文件?

[编辑]

我找到了一个帖子,我决定遵循的方向(http://community.jboss.org/message/580290),但我仍然遇到问题.

1我arquillian.xml没被拿起
2我收到有关@Resource SessionContext
3的警告我无法获得正在运行的服务器的实例

SRC /测试/资源/ arquillian.xml:

<arquillian xmlns="http://jboss.com/arquillian" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:glassfish="urn:arq:org.jboss.arquillian.container.glassfish.embedded_3">

    <glassfish:container>
        <glassfish:bindHttpPort>9090</glassfish:bindHttpPort>
        <glassfish:instanceRoot>src/test/glassfish</glassfish:instanceRoot>
        <glassfish:autoDelete>true</glassfish:autoDelete>
    </glassfish:container>

</arquillian>
Run Code Online (Sandbox Code Playgroud)

我的测试:

@RunWith(Arquillian.class)
public class ArquillianTestCase {

    @Deployment
    public static JavaArchive createDeployment() {
        final JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "test.jar")
                .addClasses(FileBrowser.class, FileBrowserBean.class).addAsResource("META-INF/ejb-jar.xml")
                .addAsResource("META-INF/glassfish-ejb-jar.xml");
        return jar;
    }

    @EJB
    private FileBrowser fileBrowser;

    @Test
    public void setupSecurity() throws Exception {
        GlassfishTestHelper.createFileUser("user1", "xxx", "role1");
    }

    @Test
    public void testLoadConfiguration() throws Exception {
        final boolean loggedIn …
Run Code Online (Sandbox Code Playgroud)

security java-ee glassfish-embedded jboss-arquillian

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

Maven Embedded Glassfish插件

我似乎无法让Maven Glassfish插件在我的生活中工作:

<project>
  ...
  <pluginRepositories>
    <pluginRepository>
      <id>glassfish-repository</id>
      <name>Java.net Repository for Glassfish</name>
      <url>http://download.java.net/maven/glassfish</url>
      <layout>default</layout>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.glassfish</groupId>
        <artifactId>maven-embedded-glassfish-plugin</artifactId>
        <version>3.0</version>

        <configuration>
          <goalPrefix>glassfish</goalPrefix>
          <app>${artifactId}.war</app>
          <contextRoot>${context.root}</contextRoot>
          <port>${http.port}</port>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>  
</project>
Run Code Online (Sandbox Code Playgroud)

当我运行时mvn glassfish:run,它正在寻找一个不同的插件,但无法找到它:

[INFO] The plugin 'org.apache.maven.plugins:maven-glassfish-plugin' does not exist or no valid version could be found
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

maven-2 glassfish glassfish-embedded glassfish-3

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

如何处理类路径冲突

在我的项目中,我正在使用glassfish-embedded 3.1.1和番石榴lib ...问题是glassfish附带了番石榴的旧实现(即google-collections)......

这会在运行时导致NoSuchMethodError,例如在使用稍后在guava中引入的Lists.reverse()或Sets.newIdentityHashSet()时.

我找不到任何解决方案来解决这个问题...(唯一一个是手动删除glassfish jar中的com/google类目录...)

java glassfish guava glassfish-embedded

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

如何使用Arquillian测试登录/身份验证 - Java EE 7

我们有一个Java EE 7应用程序并使用Arquillian来测试东西.现在我们要检查当前登录用户的一些权限.我的问题很基本,如何在测试用例中登录用户?我读过ProgrammaticLogin在arquillian测试嵌入式Glassfish,安全性和Arquillian问题上都没有用,但是没有明确回答.我目前的做法是这样的:

// Inject services etc.  

@Test
public void testLogin(){

    UserAccount user = new UserAccount();
    user.setUsername("bob");
    user.setPassword("bob");
    userAccountService.save(user);

    ProgrammaticLogin pl = new ProgrammaticLogin();
    String realmName = "secureJDBCRealm";
    try {
        pl.login("bob", "bob".toCharArray(), realmName, true);
    } catch (Exception e){
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在当我尝试运行它时,得到一个LoginException,声称我没有为"fileRealm"配置LoginModule.但是"fileRealm"不是我正在寻找的领域(我把它放在那里进行第一次测试,但后来我将其改为"secureJDBCRealm",这是我们为GlassFish定制的安全领域).我们arquillian-glassfish-embedded-3.1用于测试.

  • 有谁知道在哪里定义Arquillian王国?
  • 为什么我的应用程序一直在寻找fileRealm?这是默认值吗?(在这里找不到任何规格)

java glassfish-embedded jboss-arquillian java-ee-7

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

Arquillian - 程序化配置

我正在使用Arquillian和使用TestNG的嵌入式glassfish 3.1.2.2编写集成测试.我希望能够并行运行这些测试,对于这种情况,我需要动态配置glassfish端口和数据库名称(我们已经有了这个设置,我想重用它的arquillian测试).我缺少的是一个'before container start'钩子,在那里我可以准备数据库,查找空闲端口并更新我的glassfish配置(domain.xml,也可以是glassfish-resources.xml).是否有一个"干净"的解决方案,或Arquillian开发人员没有预见到我的用例?

我目前解决它的hacky方法是覆盖arquillian的beforeSuite方法,但是这个方法被调用两次 - 在测试启动时然后在容器中(因此我可怜的静态标志).其次,这个解决方案不适用于基于JUnit的测试,因为在套件之前无法拦截arquillian:

public class FullContainerIT extends Arquillian {

    private static boolean dbInitialized;

    //@RunAsClient <-supported by @Test only
    @Override
    @BeforeSuite(groups = "arquillian", inheritGroups = true)
    public void arquillianBeforeSuite() throws Exception {
        if (dbInitialized == false) {
            initializeDb();
            dbInitialized = true;
        }
        super.arquillianBeforeSuite();
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一些想法:
+ @BeforeSuite @RunAsClient似乎是我需要的,但@RunAsClient仅支持@Test;
+我org.jboss.arquillian.container.spi.event.container.BeforeStartArquillian JavaDocs中看过事件 ,但我不知道如何听Arquillian事件;
+我已经看到有可能@Deployment创建一个ShrinkWrap描述符,但这些不支持Glassfish资源.

testng glassfish glassfish-embedded jboss-arquillian

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

处理Java EE和java.endorsed.dirs的最佳实践?

我最近遇到了glassfish standalone(v3.1)vs glassfish embedded(v3.1)vs java SE以及java.endorsed.dirs的使用方式的问题.我遇到的具体问题在这里,但我认为这不是我最后一次遇到类似问题.

我在这里这里找到的信息建议在编译时将glassfish认可的lib添加到bootstrap类路径.但是,这个错误报告表明,当使用嵌入的glassfish时很难正确设置认可的库.

因此,似乎当我部署到独立的glassfish容器时,我的应用程序将针对glassfish包含的认可库运行,但是当使用嵌入式容器时,它不会.我遇到了我原来的问题,因为maven-embedded-glassfish-plugin没有启动使用像glassfish独立的认可库这样嵌入的glassfish.我也不确定其他容器(例如:jboss)是否包含与glassfish相同的一组认可库.

所以,我(1)应该努力(很多)确保我的应用程序是针对认可的lib编译的,并且总是部署到使用已认可的libs引导的容器中,或者我应该坚持使用捆绑的内容使用Java SE 6?

如果我选择(2),在将应用程序部署到使用较新的背书库进行自举的容器时,是否需要担心不兼容问题?

我很感激任何人都能提供的见解.

glassfish java-ee glassfish-embedded

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

NetBeans 7.0,JUnit和Glassfish Embedded 3.1:不起作用

我正在尝试使用NB7,JUnit和Win7Professional机器中的嵌入式Glassfish服务器JUnit测试J2EE Web应用程序.

我将其分解为仅使用单个会话Bean测试简单的Hello-World Web App.

我在我的类路径中有glasfish-embedded-static-shell.jar,并且还试图使用glassfish-embedded-all-3.1但它也没有用.

现在这是我用来测试bean的代码:

import javax.ejb.embeddable.EJBContainer;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

public class SimpleBeanTest {

private static EJBContainer container;

public SimpleBeanTest() {
}

@BeforeClass
public static void setUpClass() throws Exception {
    container = javax.ejb.embeddable.EJBContainer.createEJBContainer();
}

@AfterClass
public static void tearDownClass() throws Exception {
    container.close();
}

@Test
public void testCountToThree() throws Exception {
   System.out.println("countToThree");
   SimpleBean instance = (SimpleBean) container.getContext().lookup("java:global/classes/SimpleBean");
   int expResult = 0;
   int result = instance.countToThree();
   assertEquals(expResult, result);

}
}
Run Code Online (Sandbox Code Playgroud)

以下是它的结果:

19.06.2011 09:31:56 …
Run Code Online (Sandbox Code Playgroud)

java netbeans glassfish java-ee glassfish-embedded

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

从嵌入式Glassfish 3.1获取上下文

现在有没有人使用Embeddable API获取服务器上下文(使用org.glassfish.embeddable.GlassFish,不是javax.ejb.embeddable.EJBContainer)?如果有一种方法可以从正在运行的Glassfish获得EJBContainer,但我甚至找不到可用于查找的服务列表.

java glassfish-embedded

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

嵌入 Maven 的 Glassfish - 许可证 FileNotFoundException

我正在使用 Netbeans 8.0、Windows 8、Java EE 7、Maven Web 应用程序项目和 glassfish 4。

当我尝试使用可嵌入的 EJB 容器运行单元测试时,容器的创建失败并出现以下异常:

SEVERE: Error while expanding archive file
java.io.FileNotFoundException: C:\Users\...\AppData\Local\Temp\gfembed1338945565251414358tmp\applications\classes\license\LICENSE (The system cannot find the file specified)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
    at com.sun.enterprise.deploy.shared.FileArchive.putNextEntry(FileArchive.java:716)
    at org.glassfish.internal.deployment.GenericHandler.expand(GenericHandler.java:99)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.getContext(ApplicationLifecycle.java:1807)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.access$200(ApplicationLifecycle.java:115)
    at com.sun.enterprise.v3.server.ApplicationLifecycle$DeploymentContextBuidlerImpl.build(ApplicationLifecycle.java:1670)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:424) at  com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:356)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674)
    at com.sun.enterprise.admin.cli.embeddable.DeployerImpl.deploy(DeployerImpl.java:133)
    at com.sun.enterprise.admin.cli.embeddable.DeployerImpl.deploy(DeployerImpl.java:109)
    at org.glassfish.ejb.embedded.EJBContainerImpl.deploy(EJBContainerImpl.java:138)
    at org.glassfish.ejb.embedded.EJBContainerProviderImpl.createEJBContainer(EJBContainerProviderImpl.java:134)
    at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:127)
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 netbeans …

netbeans maven glassfish-embedded

5
推荐指数
0
解决办法
297
查看次数