标签: glassfish-3

Java EE安全性:JASPIC/JAAS还是应用安全框架?(Glassfish 3)

我目前正在使用Oracle ADF(这是一个端到端的Java EE框架)来构建我的Web应用程序和GlassFish 3.1作为应用程序服务器.

后者支持JAAS(在其管理控制台中声明).因此,我创建了一个安全领域,并使用配置文件中声明的角色映射它们,并使用JAAS实现授权和身份验证安全功能.一切都很好,直到现在!在过去的几周里,我一直在研究Java EE安全性.

我发现如果你坚持使用"基本"安全性,那么JAAS就足够了.此外,似乎JAAS(作为Java安全框架的一部分)仅适用于Java SE(但由于Java EE是基于Java SE构建的,因此其中一些模块正在被重用,例如LoginMethod和Callbacks).

然后,我发现很多关于JASPIC的帖子,发现它只能通过编程方式实现(不是问题),并且它还没有被app服务器供应商完全支持,并试图在两者之间进行比较.即使JASPIC1.1版本已经解决了一些问题,例如:

但是,容器不会完全记住身份验证.在每个请求仍然调用SAM,并且SAM仍然必须重新进行身份验证

(这对我来说听起来不太好).

然后,我继续寻找集成一些安全框架.最着名的似乎是"春天""四郎".当然,他们每个人都有自己的特点(可能第一个更适合特定情况,而第二个更适合另一个).对我来说更重要的是:

  • 认证
  • 授权
  • 会话管理(可能还有加密)

但是,到处都发现了相互矛盾的结论.结果:在搜索之前我现在更加困惑.

我只是安全等主题的新手,而且我是一名开发人员(我有实施的东西),因此很难及时了解每一个新版本,安全方面的进展似乎每天都在继续.

如果可能的话,我想根据个人经验得出一些事实.每个提示或建议都表示赞赏.我想确保在采取实施步骤之前我有信心.

java security jaas glassfish-3 jaspic

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

在GlassFish上自动启动JavaDB(Derby)

我打算将GlassFish v3开源版本部署到生产环境中.它带有JavaDB(Apache Derby),这正是我需要的.唯一的问题是GlassFish启动时默认情况下不启动JavaDB.我必须转到命令行并输入:

asadmin start-database
Run Code Online (Sandbox Code Playgroud)

有没有办法让数据库在服务器(GlassFish)启动时自动启动?我讨厌每次在开发应用程序时手动执行此操作,我当然不希望在生产中执行此操作.

提前致谢

glassfish derby javadb glassfish-3

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

"org.hibernate.DuplicateMappingException"错误是什么意思?

我试图强制JPA/Hibernate生成并只使用小写的表名.我已经实现了这样的NamingStrategy:

public class MyNamingStrategy extends DefaultNamingStrategy {

  @Override
  public String classToTableName(String className) {
    return super.classToTableName(className).toLowerCase();
  }
}
Run Code Online (Sandbox Code Playgroud)

我通过在persistence.xml中设置此属性来应用它:

<property name="hibernate.ejb.naming_strategy" value="entities.strategy.MyNamingStrategy"/>
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到这个堆栈跟踪:

SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
org.hibernate.DuplicateMappingException: Same physical table name [planning] references several logical table names: [Planning], [OrderProductMan_Planning]
        at org.hibernate.cfg.Configuration$MappingsImpl.addTableBinding(Configuration.java:2629)
        at org.hibernate.cfg.annotations.TableBinder.buildAndFillTable(TableBinder.java:254)
        at org.hibernate.cfg.annotations.TableBinder.bind(TableBinder.java:177)
Run Code Online (Sandbox Code Playgroud)

什么是

相同的物理表名称[planning]引用了多个逻辑表名称:[Planning],[OrderProductMan_Planning]

意思?

来自错误的实体,尽可能简化.如果你需要休息,请告诉我.

@Entity
public class Planning implements Serializable {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Integer id;

  private Integer qty;

  @ManyToOne
  private OrderProductMan orderProduct;

  ....
}


@Entity
@Table
public class …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa java-ee-6 glassfish-3

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

GlassFish 3:如何更改(默认)日志记录格式?

问题源于此:http://www.java.net/forum/topic/glassfish/glassfish/configuring-glassfish-logging-format - 没有答案.

默认的GlassFish 3日志记录格式非常烦人,太长了.

[#|2012-03-02T09:22:03.165+0100|SEVERE|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=113;_ThreadName=AWT-EventQueue-0;| MESSAGE... ]
Run Code Online (Sandbox Code Playgroud)

这只是一个可怕的默认IMO.文档只解释了所有字段,但没有解释如何更改格式:http://docs.oracle.com/cd/E18930_01/html/821-2416/abluk.html

请注意,我将SLF4J与我的webapp一起部署,它也应该选择格式.

你如何改变日志记录格式?

供参考:

这里的链接已过时:在glassfish中安装日志格式化程序 ...

这里的问题尚未得到解答:如何配置GlassFish日志记录以显示时间戳中的毫秒数?...

这里的帖子没有任何结果:http://www.java.net/forum/topic/glassfish/glassfish/cant-seem-configure- ...

看起来GlassFish日志记录配置本身就是一个问题.有人可以帮忙吗?

java logging glassfish slf4j glassfish-3

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

Glassfish从命令行调试

我正在远程机器上运行Glassfish.是否有命令从命令提示符启动GF在调试模式下?远程机器运行Ubuntu 10.04,我的机器运行Windows 7(不确定这是否重要).

我连接没有问题,知道远程启动和停止服务器的命令.我甚至找到了这个文档.不幸的是,我认为我的问题的答案是"不",但我想在放弃希望之前把它放到SO社区.

glassfish-3

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

在Windows上部署后,glassfish在哪里保存您的类/项目?

我在Windows XP上使用Glassfish3.1.使用Netbeans部署Web服务项目后,它可以正常工作.但是当我去的时候

install-path\glassfish-3.1\glassfish\domains\domain1\applications
Run Code Online (Sandbox Code Playgroud)

我没有看到我的申请.

install\glassfish-3.1\glassfish\domains\domain1\applications\__internal,有一个与我的项目同名的文件夹.但那个文件夹是空的.

但是如果我在linux上部署一个项目,我可以在application文件夹下找到我的应用程序和类.

那么它们在windows上的哪个位置?

windows deployment netbeans glassfish-3

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

我如何使用@ConversationScoped

我正在编写一个JSF 2.0应用程序,我想使用CDI注释而不是"等效"JSF注释.换句话说,@ Model或@Named代替@ManagedBean,而@Inject代替@ManagedProperty.

我唯一无法工作的是@ViewScoped,它是AJAX组件所必需的.唯一可靠的解决方法是使用@SessionScoped,这不是一个好习惯.

什么是正确的做法?就像我搜索一样,我变得更加困惑.

这是在GlassFish 3.1.1上,我理解其中有Weld 1.1.0.

更新:这个问题的原始形式说我无法让@ConversationScoped工作.从那以后我发现了我的错误,我确实让它像这样工作:

@Model
@ConversationScoped
public class Abean implements Serializable {

@Inject Conversation conversation;

// stuff omitted for brevity

public String getSomething() {
    if (conversation.isTransient()) conversation.begin();
    return "something";
}
Run Code Online (Sandbox Code Playgroud)

这似乎可以解决问题.但是现在我的问题已经改变了.你应该在哪里调用conversation.end()?我是否必须编写过滤器来检测用户何时离开页面?或者,如果它被单独留下,那么Abean实例何时被取消引用?

第二次更新:我在这里找到关于CDI的@ConversationScoped的非常好的讨论.

我仍然留下如何调用conversation.end()的问题.我的bean为通过AJAX更新的数据表浏览器提供有状态的支持,并且调用end()的最佳位置是用户导航离开页面.但是,如果没有编写过滤器来监控页面,我实际上并没有看到任何方法.任何关于"最佳实践"的建议都是受欢迎的.

cdi jsf-2 glassfish-3

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

无法在Windows 7上启动glassfish v3

我在Windows 7上安装了glassfish v3,但它不会在8080上启动.当我转到8080时我会得到典型的死页,就像你没想到的那样.

我试着手动启动它.C:\ glassfish3\bin asadmin start-domain我得到的是"系统找不到指定的路径"

我搜索了你的答案,但大多数问题都涉及到玻璃鱼没有启动,因为端口不是免费的.然而,这不是我的问题.

我已经尝试重新安装大约六次,甚至重新启动.没有什么变化

windows glassfish-3

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

在IntelliJ中设置Glassfish配置时,找不到"管理端口配置"错误

在IntelliJ IDEA中设置Glassfish时,我收到以下错误消息"未找到管理端口配置".

现在我搜索了一个低,但我找不到我可以设置管理端口的地方.

搜索Google我发现的所有内容都是JavaRanch上的死链接.所以我不是第一个,但解决方案丢失了.

有人知道要做什么吗?

intellij-idea glassfish-3

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

JavaEE 6:javax.naming.NameAlreadyBoundException:使用重新绑定来覆盖

我有一个由两个EJB实现的业务接口.

UserManagementService

@Remote
public interface UserManagementService {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

UserManagementServiceJpaImpl

@Stateless(name="userManagementServiceJpaImpl")
public class UserManagementServiceJpaImpl implements UserManagementService {

    @EJB(beanName="userManagementDaoJpaImpl")
    private UserManagementDao userManagementDao;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

UserManagementServiceMockImpl

@Stateless(name="userManagementServiceMockImpl")
public class UserManagementServiceMockImpl implements UserManagementService {   

    @EJB(beanName="userManagementDaoMockImpl")
    private UserManagementDao userManagementDao;

    // ...

}
Run Code Online (Sandbox Code Playgroud)

当我将应用程序部署到Glassfish 3.1时,我收到以下错误:

java.lang.RuntimeException: Error while binding JNDI name com.transbinary.imdb.service.UserManagementService for EJB : userManagementServiceMockImpl
    at com.sun.ejb.containers.BaseContainer.initializeHome(BaseContainer.java:1550)
    at com.sun.ejb.containers.StatelessSessionContainer.initializeHome(StatelessSessionContainer.java:202)
    at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:167)
    at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:234)
    at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:290)
    at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:101)
    at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
    at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:249)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
    at …
Run Code Online (Sandbox Code Playgroud)

ejb-3.0 glassfish-3

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