是否可以在 Java EE 6 中以编程方式对用户进行身份验证?
让我解释一下更多细节:
我有一个带有 Servlet 和 hibernate 的现有 Java SE 项目;我手动管理所有身份验证和访问控制:
class Authenticator {
int Id
string username
}
Authenticator login(string username, string password) ;
void doListData(Authenticator auth) {
if (isLoggedIn(auth)) listData();
else doListError
}
void doUpdateData (Authenticator auth) {
if (isLoggedAsAdmin(auth)) updateData() ;
else doListError();
}
void doListError () {
listError() ;
}
Run Code Online (Sandbox Code Playgroud)
我在这个项目中集成了 J2ee/jpa/servlet 3/... (Glassfish 3)。
我见过这样的注释:
@RolesAllowed ("viewer")
void doListdata (...) {
istData() ;
}
@RolesAllowed("admin")
void doUpdateData (...) {
updateData() …Run Code Online (Sandbox Code Playgroud) 我想在我的一个实体中拥有只读功能。我知道在 JPA 2.0 中我们本身没有这样的功能。我认为我们可以使用它来实现它updateable=false, insertable=false,但我不认为我明白它是如何工作的。
假设我有两个实体:OrderedItem和Customer:
@Entity
public class OrderedItem {
@Id
@GeneratedValue
private int id;
private String name;
@ManyToOne
@JoinColumn(updatable = false)
private Customer owner;
// bunch of simple getters and setters
}
@Entity
public class Customer {
@Id
@GeneratedValue
private int id;
private String name;
@OneToMany(mappedBy="owner")
private Set<OrderedItem> orderedItems;
// bunch of simple getters and setters
}
Run Code Online (Sandbox Code Playgroud)
现在考虑以下代码:
Customer john = new Customer();
john.setName("John");
OrderedItem milk = new OrderedItem();
milk.setName("Milk"); …Run Code Online (Sandbox Code Playgroud) 是否有任何开源java库可以解析ANSI X12和UN/EDIFACT标准中的EDI文件?我找到了smooks(http://www.smooks.org),它支持UN/EDIFACT标准但不确定这是否支持ANSI X12标准的EDI文件.
提前致谢.
我有一个 Maven War 项目,它依赖于 EJB Maven 项目。EJB 项目处理所有业务逻辑,包括通过 Hibernate 进行数据库访问。这两个项目都是 JEE6 并使用 maven 在 glassfish 3.1.2 上运行。我目前正在尝试配置 Log4j 以在所描述的场景中工作(也记录休眠)。我的 ejb 的 src/main/resources 文件夹中有以下 log4j.xml 文件(我认为它位于类路径中):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j=
"http://jakarta.apache.org/log4j/"
debug="false">
<appender name="consoleAppender"
class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d
%-5p [%c{1}] %m %n" />
</layout>
</appender>
<logger name="javabeat.net.log4j" additivity="false" >
<level value="INFO" />
<appender-ref ref="consoleAppender"/>
</logger>
</log4j:configuration>
Run Code Online (Sandbox Code Playgroud)
我不断从 log4j 收到此错误:
严重:log4j:错误“org.apache.log4j.xml.DOMConfigurator”对象无法分配给“org.apache.log4j.spi.Configurator”变量。
严重:log4j:错误类“org.apache.log4j.spi.Configurator”已加载
严重: log4j:ERROR [WebappClassLoader (delegate=true; repositories=WEB-INF/classes/)] 而对象类型
严重:log4j:错误“org.apache.log4j.xml.DOMConfigurator”已由[WebappClassLoader(delegate=true;repositories=WEB-INF/classes/)]加载。
严重:log4j:错误无法实例化配置器[org.apache.log4j.xml.DOMConfigurator]。
严重:log4j:警告找不到记录器(org.hibernate.type.BasicTypeRegistry)的附加程序。 …
Q1: 我正在编写一个使用 BMT 的 EJB Singleton bean,所以我需要在我的 bean 中使用 UserTransaction。我想知道将 @Resource UserTransaction 注入我的 EJB 单例 bean 是否安全。我不知道容器是否会注入 UserTransaction 的代理。有人可以给我一些想法吗?谢谢!
问题 2:
@Resource UserTransaction 和 sessionContext.getUserTransaction() 有什么区别。它们是等价的吗?
该@WebServlet注释也有这个键:
displayName,smallIcon,largeIcon,description
但在设置这些属性后,我可以在哪里获取或看到它们?
如何在没有请求映射到任何控制器的情况下在弹簧3中为jl映射jsp.
例如./登录到login.jsp,中间没有任何用户定义的控制器
像spring2.5中的URLFILENAMECONTROLLER一样,在春季3也是如此
我刚刚阅读了各种托管bean及其关于Java EE 6 @ javax.annotation.ManagedBean与@ javax.inject.Named与@ javax.faces.ManagedBean的关系的非常好的解释,因为我面临一个烦人的问题.应用程序我想知道是否可以控制或影响bean的启动方式和方式.
在我的Java EE应用程序中,我使用EJB,CDI和JSF2作为视图技术.通过SPI启动来自第三方的服务,它配置一个作业执行程序,它启动作业并处理其他与计时器相关的内容.当作业执行程序完成引导时,会立即执行一项任务.此作业使用CDI注入来访问某些bean,其中一个bean使用EJB.
现在的问题是Java EE 6服务器(JBoss 7.1.1)启动EJB的大部分时间仍然不可用,然后作业尝试访问它.抛出异常并且作业失败并构建服务以停用该失败的作业.好吧,停用一个faild工作似乎并不太糟糕.该作业再次启动和运行的唯一解决方案是取消部署并再次重新部署它.遗憾的是,这是一个手动任务,无法以编程方式完成.
并且,为了使事情变得糟糕:在极少数情况下,这不会发生.
所以,我现在的问题是:我可以以某种方式控制EJB和CDI bean的初始化和部署,以便我可以确保在初始化CDI bean之前初始化所有EJB bean吗?
我已经在EARs application.xml中将initialize-in-order设置为true并设置了EJB的顺序,以便它们以我需要的方式初始化(EJB核心,然后是EJB业务,然后是WAR),但是基于CDI的服务作为JAR放在lib文件夹中.
我从不工作JMS.最近我下载Activemq和从没有改变端口61616到61617所有conf/activemq-*.xmlfiles.I在浏览器中运行的命令提示符,然后打开控制台页面下面的命令.
C:\Users\Infratab Bangalore\Desktop\Queueing\apache-activemq-5.8.0\bin>activemq
Run Code Online (Sandbox Code Playgroud)

现在我想给使用Java代码的消息JMS来Activemq.对于这一点,我写了下面的代码.并使用Apache Tomcat server.it运行我的代码
此代码在Eclipse中实现.
package PackageName;
import java.io.IOException;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageProducer extends HttpServlet {
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
try {
//created ConnectionFactory object for creating connection
ConnectionFactory factory = new ActiveMQConnectionFactory("admin", "admin", "tcp://localhost:61617");
//Establish the connection …Run Code Online (Sandbox Code Playgroud) 我是CDI的新手.在阅读时,我总是遇到上下文对象,非上下文对象.他们是什么意思?
例如以下链接
http://docs.jboss.org/weld/reference/latest/en-US/html/beanscdi.html#d0e881
消息驱动和实体bean本质上是非上下文对象,可能不会注入其他对象
java-ee-6 ×10
java ×7
cdi ×2
glassfish-3 ×2
jakarta-ee ×2
eclipselink ×1
edi ×1
ejb ×1
ejb-3.0 ×1
hibernate ×1
java-ee-5 ×1
java-ee-7 ×1
jms ×1
jpa-2.0 ×1
log4j ×1
maven-3 ×1
rbac ×1
readonly ×1
security ×1
servlet-3.0 ×1
servlets ×1
spring ×1
spring-mvc ×1
transactions ×1