我正在关注FirstCup的Java EE 7更新版本.我安装了glassfish 4并使用NetBeans 7.3.我正在研究第一个例子,我正在解决maven问题.
我生成了原型,并且能够创建dukes-age项目.但是它有不可解决的maven问题:
找不到工件org.glassfish.javaeetutorial.firstcup:firstcup:pom:7.0.1-SNAPSHOT
这是完整的错误:
[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR] The project com.mycompany:dukes-age:1.0-SNAPSHOT (/Users/koblentz/NetBeansProjects/dukes-age/pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Could not find artifact org.glassfish.javaeetutorial.firstcup:firstcup:pom:7.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 5, column 13 -> [Help 2]
[ERROR]
Run Code Online (Sandbox Code Playgroud)
我不确定该怎么做/如何解决这个问题.我删除了.m2 repo中的本地缓存,并尝试从命令行构建而不是使用NB来运行maven命令.
有任何想法吗?
Java EE 7已经淘汰,我喜欢的功能之一是标准Websockets.目前我在Tomcat 7工作,有没有办法在我的Tomcat 7中集成Java EE 7 Websockets?我在Tyrus Websocket的文档中搜索它没有成功
更新:Tomcat 7.0.47附带Websocket支持,是的宝贝!
Q1: 我正在编写一个使用 BMT 的 EJB Singleton bean,所以我需要在我的 bean 中使用 UserTransaction。我想知道将 @Resource UserTransaction 注入我的 EJB 单例 bean 是否安全。我不知道容器是否会注入 UserTransaction 的代理。有人可以给我一些想法吗?谢谢!
问题 2:
@Resource UserTransaction 和 sessionContext.getUserTransaction() 有什么区别。它们是等价的吗?
我使用dao身份验证和自定义身份验证过滤器搜索了Spring安全示例,但是我发现,所有示例都使用xml文件配置,
我的问题是如何配置自定义过滤器,即UsernamePasswordAuthenticationFilter
我的基于xml的securityConfig文件如下所示:
<http auto-config="false" use-expressions="true">
<intercept-url pattern="/" access="permitAll" />
<intercept-url pattern="/auth/login.html" access="permitAll" />
<intercept-url pattern="/auth/logout.html" access="permitAll" />
<intercept-url pattern="/auth/accessDenied.html" access="permitAll" />
<intercept-url pattern="/admin/**" access="hasAnyRole('ROLE_ADMIN')" />
<intercept-url pattern="/user/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />
<access-denied-handler error-page="/auth/accessDenied.html"/>
<form-login login-page='/auth/login.html'
default-target-url="/"
authentication-success-handler-ref="myAuthenticationSuccessHandler"
authentication-failure-url="/auth/loginfailed.html" />
<logout success-handler-ref="myLogoutSuccessHandler"
invalidate-session="true" delete-cookies="JSESSIONID" />
<remember-me key="uniqueAndSecret" token-validity-seconds="86400" />
<session-management session-fixation-protection="migrateSession"
session-authentication-error-url="/auth/loginfailed.html">
<concurrency-control max-sessions="1"
error-if-maximum-exceeded="true"
expired-url="/auth/login.html"
session-registry-alias="sessionRegistry"/>
</session-management>
</http>
<beans:bean id="myAuthenticationSuccessHandler"
class="com.asn.handler.AsnUrlAuthenticationSuccessHandler" />
<beans:bean id="myLogoutSuccessHandler"
class="com.asn.handler.AsnLogoutSuccessHandler" />
<beans:bean id="userDetailsService" class="com.asn.service.UserDetailsServiceImpl"/>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userDetailsService">
<password-encoder ref="encoder"/>
</authentication-provider>
<!-- <authentication-provider>
<user-service>
<user …Run Code Online (Sandbox Code Playgroud) 默认情况下,Bean Validation 基于 Locale.getDefault() 获取 Locale,这对整个 JVM 是通用的。
如何更改当前 EJB 方法调用的 BeanValidation 的区域设置?
我正在使用 JavaEE7 并希望从 JPA 和 Bean 验证的集成中获益,即插入/更新/删除事件的自动触发验证,并尽可能避免手动编写所有内容。
编辑
毕竟,我只是从 EJB 返回非内插消息:
public class DoNothingMessageInterpolator implements MessageInterpolator {
@Override
public String interpolate(String message, Context context) {
return message;
}
@Override
public String interpolate(String message, Context context, Locale locale) {
return message;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在 Web 层插入它们:
try{
//invoke ejb
}catch( EJBException ejbex ){
if( ejbex.getCause() instanceof ConstraintViolationException ){
ConstraintViolationException cve = (ConstraintViolationException) ejbex.getCause();
WebUtils.printConstraintViolationMessages("NewConferenceForm:", context, cve, new Locale(languageCtrl.getLocaleCode()) …Run Code Online (Sandbox Code Playgroud) 我认为这比直接编码问题更多是针对设计的问题。
我想实现一个websocket服务,该服务将来自国外http://资源的更新数据集提供给客户端。但是我想在第一个客户端连接之前就可以使用数据,所以@OnLoad表示法不会做。
在HttpServlet世界上我会
@Override
public void init() throws...
仅使用JSR-356我无法找到合适的方法。我尝试使用custom,ServerEndpointConfig.Configurator但这似乎无法让我访问类似于init()from的方法HttpServlet。
所以我的问题是:
让websocket Endpoint类扩展HttpServlet使我可以访问该init()方法,并且可以在其中放置初始逻辑。这是解决我的问题的合适方法,还是我错过了JSR-356中的某些功能,它可以很好地完成工作并且无需导入大部分未使用的servlet包?
非常感谢你!
我已经阅读了Java EE文档,但对我来说还不清楚。根据API,找到另一个Session的唯一方法是这样的代码:(假设我们具有其他Session的标识符):
import javax.websocket.Session;
...
private static Session findOtherSessionById(Session user, String id) {
for (Session session : user.getOpenSessions()) {
if (id.equals(session.getId())) {
return session;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我们有成千上万的用户时,此代码是性能瓶颈。
因此,有没有一种方法可以快速通过id获得Session,而无需为此使用自己的ConcurrentHashMap?也许某些应用服务器对此具有未保留的功能(对我来说Wildfly会很棒)?
在Java SE中,可以使用类似
ExecutorService es1 = Executors.newSingleThreadExecutor();
ExecutorService es2 = Executors.newFixedThreadPool(10);
Run Code Online (Sandbox Code Playgroud)
控制执行程序服务可用的线程数。在Java EE 7中,可以注入执行程序服务:
@Resource
private ManagedExecutorService mes;
Run Code Online (Sandbox Code Playgroud)
但是,如何控制托管执行程序服务可用的线程数?例如,在我正在编写的应用程序中,有一个执行程序服务必须在单个线程中执行。因此,我不能只让平台选择其首选的线程数。
单个 ServerEndpoints 线程安全还是属于在给定时间与其交互的所有客户端?
或者用另一种方式来问同样的问题:ServerEndpoint 类中的全局对象是否有产生并发问题的危险,就像它们在 HttpServlets 中所做的那样?
这个例子似乎表明每个 Endpoint 都是线程安全的,或者他只是在使用 Set 并祈祷并发问题不要出现?
那么,假设它们是线程安全的,容器(Tomcat、Glassfish 等)是否会在每次建立来自不同客户端的新连接时创建 ServerEndpoint 类的新实例?
谁能解释一下Enterprise Java Beans和Entity Java Bean之间的区别?
我知道 EJB 是什么,但我不明白它们在持久性方面的区别。
我们使用相同的注解来保存它,但那为什么叫它不同呢?
java-ee-7 ×10
java ×8
websocket ×4
java-ee ×3
ejb ×2
concurrency ×1
glassfish-4 ×1
java-ee-6 ×1
maven ×1
netbeans-7 ×1
performance ×1
tomcat7 ×1
tomcat8 ×1
transactions ×1