我对GWT,GIN和GWTP-dispatch有广泛的经验,因为我没有任何Errai经验,我想问你是否真的是在Errai上构建整个单页富Web应用程序作为基础的好选择.如果您对Errai有广泛的经验,那么很高兴收到您的来信.
我正在构建一个视频流媒体网络应用程序.让我们说它是另一个YouTube(布局,动作,流程等),但是类固醇(不相关).
我已经阅读了Errai的全部文档,这是我的疑虑/问题.
Errai JAX-RS - 我对任何复杂的消息都不感兴趣Errai因服务器 - >客户端,客户端 - >客户端,广播,对话等而闻名.我希望通过RS进行简单的AJAX调用.显而易见的是通信性能,没有冗余调用,只有单个HTTP请求和响应?
这里提到的限制怎么样(如何使用Errai将GWT与JAX-RS/RESTEasy服务器集成?):这些是最新的,我必须考虑到一些Errai限制来实现REST服务吗?
Errai IoC/CDI - GIN对我来说似乎更成熟,绝对更受欢迎(带来所有好处).但看起来他们可以完美地共存,或者我应该选择其中一个?让许多Errai bean(如Caller)注入一个注释是很好的.对于我的理解,我不需要CDI.如果我在我的项目中使用Errai IOC,我可以通过CDI获得哪些附加功能?我是否必须在我的类路径上使用它以便所有内容都由ioc容器实例化?
我是否理解正确:IoC可以实现简单的布线,CDI是我可以实际配置和实例化注入的bean的地方吗?例如@Produces在CDI中,而不在IOC中.你能解释一下Errai IOC和CDI在纯DI背景下的区别吗?我知道一个人是另一个人的超集,但我仍然不太明白.
Errai数据绑定:很棒,很棒的功能但它扭曲了MVP模式.Currenlty我已经在基本MVP中编写了我的应用程序(没有mvp框架,模型和视图之间没有交互).我可以从演示者管理@Model上的数据绑定,而不是从视图管理数据绑定(这将使用带有Errai UI的HTML模板)吗?
Errai UI:在数据绑定和连线View类中,如何使用像CellTable这样的GWT现有小部件?
一般来说,在使用Errai编写更复杂的小部件(例如带有寻呼机的图像库)时,您会使用什么方法?您是否利用现有的GWT小部件(如CellTable) - 单个重型小部件 - 或者更确切地说是在html模板中布局所有内容,并将某些div连接到View类中相应的数据字段 - 更轻量级的小部件?我已经看到了Errai UI的一位作者的观点:
关于Errai UI的好处是你只是将这个模板文件转储到你的项目中然后你说"好的这块模板属于这个组件"或"这个模板的一部分属于这个其他组件".你可以将这些东西连接在一起,你的模板就会在你面前呈现 - 就在浏览器中.
所以,假设我有一个整个图库的html布局.显然我不想用CellTable重新创建它,但是利用那个布局,所以我必须能够:创建整个图像库作为一个复合材料,它本身必须连接到布局中的最外层元素并连接每个数据-field到我的Composite类中的相应属性.那可能吗?
服务器应该是GWT/Errai不可知的:在服务器端,我想尽可能少地使用Errai(因为我不想要像我所说的任何花哨的通信功能)并使用Spring on Jetty或Tomcat维护应用程序.
通过添加新技术作为基础,即在其上构建整个应用程序,总是存在一种风险,即它不够灵活,这意味着需要一些黑客来克服不可预见的障碍,或者在某些可怕的情况下,整个技术将不得不被遗弃
最后一个简单的问题:errai的在线javadoc在哪里?
网络上的几个来源都提到了这个问题,但我无法使用那里提供的解决方案来解决它。
问题:发出mvn gwt:run时,log4j 抛出以下错误:
[ERROR] log4j:ERROR A "org.apache.log4j.xml.DOMConfigurator" object is not assignable to a "org.apache.log4j.spi.Configurator" variable.
[ERROR] log4j:ERROR The class "org.apache.log4j.spi.Configurator" was loaded by
[ERROR] log4j:ERROR [sun.misc.Launcher$AppClassLoader@23137792] whereas object of type
[ERROR] log4j:ERROR "org.apache.log4j.xml.DOMConfigurator" was loaded by [WebAppClassLoader=Demo@3d1665ac].
[ERROR] log4j:ERROR Could not instantiate configurator [org.apache.log4j.xml.DOMConfigurator].
Run Code Online (Sandbox Code Playgroud)
我的项目描述:我使用 gwt 提供的默认码头服务器并在爆炸战争中运行它。
<gwt.version>2.6.1</gwt.version>
<spring.version>3.2.6.RELEASE</spring.version>
<log4j.version>1.2.17</log4j.version>
<slf4j.version>1.7.5</slf4j.version>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Normally this jar would be listed in dependencies but in …
Run Code Online (Sandbox Code Playgroud) 通过 Spring Security OAuth2 重用最终用户 Google 身份验证来访问 Web 应用程序中的 Google Calendar API
我能够通过 Spring Security 登录创建一个小型 Spring Boot Web 应用程序
spring:
security:
oauth2:
client:
registration:
google:
client-id: <id>
client-secret: <secret>
scope:
- email
- profile
- https://www.googleapis.com/auth/calendar.readonly
Run Code Online (Sandbox Code Playgroud)
当应用程序启动时,我可以访问http://localhost:8080/user并要求用户登录谷歌。成功登录后,配置文件 json 将作为以下响应显示在浏览器中:
@RestController
class SecurityController {
@RequestMapping("/user")
fun user(principal: Principal): Principal {
return principal
}
}
Run Code Online (Sandbox Code Playgroud)
@Configuration
class SecurityConfiguration : WebSecurityConfigurerAdapter() {
@Throws(Exception::class)
override fun configure(http: HttpSecurity) {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.oauth2Login()
}
}
Run Code Online (Sandbox Code Playgroud)
google-calendar-api google-oauth spring-boot spring-security-oauth2 google-signin
gwt ×2
cdi ×1
errai ×1
google-oauth ×1
jax-rs ×1
jetty ×1
log4j ×1
logging ×1
spring ×1
spring-boot ×1