我即将开始一个网络项目,并且在过去的5年中几乎完全使用LAMP堆栈.我想构建更大,更可扩展的东西,因此一直在研究Java EE.JSP和EJB之间的逻辑划分似乎是我想要做的事情的理想选择.
任何人都可以推荐资源来熟悉Java EE吗?也许如果有人知道我可以考虑的比PHP更具可扩展性的技术,我会全力以赴.
非常感谢!
我正在构建一个使用RESTful API(Jersey)的AngularJS Web应用程序.
在服务器端,我使用的是Java Application Server(详见Glassfish 4).
我的设置如下:
/api/public/*
对于公共不受限制的访问(例如/ api/public/users/signup注册为新用户).允许任何用户访问此区域.无需登录/api/private/*
限制访问(例如/ api/private/account/{id}以检索某些帐户特定数据)在web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>PRIVATE REST API</web-resource-name>
<url-pattern>/private/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<description>Have to be a USER</description>
<role-name>USERS</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>userauth</realm-name>
</login-config>
<security-role>
<description/>
<role-name>USERS</role-name>
</security-role>
Run Code Online (Sandbox Code Playgroud)
此设置适用于我,但仅限于我在浏览器中手动调用URL.如果我未经过身份验证并处理安全区域,则浏览器会要求输入用户名和密码.如果提供的凭证有效,我可以从那里访问限制区域:好.
但是我如何使用AngularJS呢?要登录,有一个POST API调用:/api/public/users/login
您必须从表单(用户名和密码)提供凭据.
客户端代码是:
ctrls.controller('LoginController', function($scope, $http, $log, $location, UserService, RemoteServerHelperService) {
$scope.loginDataWrong = undefined;
$scope.login = function(credentials) {
$http.post(RemoteServerHelperService.buildURL('/public/users/login'), …
Run Code Online (Sandbox Code Playgroud) Struts,Spring和一些其他框架实现了MVC架构,以将信息的表示与用户与其的交互分开.
任何人都可以在Java EE中解释或给我一个链接吗?
如果不使用框架,我如何创建MVC应用程序以及需要哪些设计模式?
我发现JSF 2.0 Flash范围是通过cookie在Mojarra 2.x中实现的.似乎发生的情况是,当使用Flash从视图A导航到视图B时,JSF会发送重定向响应.这是包含set-cookie标头的相同响应.
由于cookie是浏览器的全局,我想知道这会导致竞争条件的可能性.由于在重定向响应期间设置了cookie,我试图找出HTTP规范是否以某种方式保证浏览器响应的请求始终是第一个使用此cookie的请求.
但是,一般情况下,如果第一个请求以某种方式停止(因为Internet决定将该特定请求路由到世界各地),则可能仍然存在问题,然后来自另一个选项卡的第二个请求首先到达服务器.
对于两页之间的闪存范围而言,使用cookie不是一个可怕的想法,或者我是否忽略了某些东西并且它是否非常安全?
我在互联网上阅读的Java EE和Java SE类加载的区别在于
在Java SE中,类加载器将类加载委托给其父类加载器,然后尝试加载类本身
但是,在Java EE中,类加载器首先尝试加载类本身,然后将该类的类加载委托给其父类加载器.
请证实我的理解.
另外,为什么它的设计与Java EE中的设计相同(保持这种优势的任何优点.)
这是我听到的链接[http://www.youtube.com/watch?v=t8sQw3pGJzM]
我一直在寻找有关Java中异步I/O的优点的详细信息,特别是从应用程序堆栈设计.
我遇到过很多事件驱动服务器的例子,如Node.js,Tornedo等.
我无法理解的是,为什么在Java EE中使用JBoss或Weblogic应用服务器的整个应用程序堆栈迁移到事件驱动的体系结构.
甚至这些服务器也支持非阻塞I/O. 是的,他们正在为每个请求分配一个线程,但是如果有一个线程池,资源是不是在良好的性能参数范围内呢?
请按以下方式向我提供一些意见.
我正在尝试设置我的开发人员env,以便我可以使用maven编译我的LESS文件以进行正式构建,但也让Eclipse编译LESS以进行增量构建,因此我不必每次进行较少的更改时继续使用maven任务.环顾四周 - 似乎wro4j&maven插件和m2e-wtp插件应该提供所有这些.
我的设置如下:我刚刚安装了最新的稳定Eclipse(Java EE包,包括WTP的东西--v4.3),我已经安装了m2e插件和m2e-wtp插件.
pom.xml中:
<plugin>
<groupId>ro.isdc.wro4j</groupId>
<artifactId>wro4j-maven-plugin</artifactId>
<version>1.4.5</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<configuration>
<targetGroups>roa-all</targetGroups>
<destinationFolder>${project.build.directory}/${project.build.finalName}</destinationFolder>
<cssDestinationFolder>${project.build.directory}/${project.build.finalName}/css/</cssDestinationFolder>
<jsDestinationFolder>${project.build.directory}/${project.build.finalName}/js/</jsDestinationFolder>
<wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
wro.properties:
preProcessors=cssImport,semicolonAppender
postProcessors=lessCss,cssMinJawr
Run Code Online (Sandbox Code Playgroud)
wro.xml:
<groups xmlns="http://www.isdc.ro/wro">
<group name="roa-all">
<css>/less/*.less</css>
</group>
</groups>
Run Code Online (Sandbox Code Playgroud)
在我的/less/
文件夹里面基本上是一些css文件,我已经重命名.less文件,还有一个我实际上添加了一些LESS语法并设置了一些颜色变量.这主要是有效的,因为我对LESS进行了更改,插件会检测并重建我的超级css文件,但是,相当关键的是,它似乎没有编译LESS - 它结合了文件,并且缩小了,但我@variables
都是仍然是LESS语法.
我还注意到maven插件达到v 1.7.0所以尝试升级到那个以查看是否是问题,但这根本什么也没做(根本没有任何内置,我没有超级css等)
任何人都有任何经验设置或知道我在设置中遗漏的任何东西?
我有一个JASPIC auth模块,在GlassFish,WildFly和WebLogic上运行良好.
现在我们有一个使用WebSphere 8.5的新客户,我无法让auth模块在那里正常运行.
问题是WebSphere不接受auth模块放入CallerPrincipalCallback的用户名.我们其他受支持的服务器只接受这个,但出于某种原因,WebSphere认为它需要执行一些额外的检查.
在调查了这个问题后,我偶然发现了这个问题:https://www.ibm.com/developerworks/community/forums/html/topic?id = 77777777-0000-0000-0000-000014937852
这恰好描述了我的问题,但那里没有解决方案.
我如何让WebSphere说服只处理CallerPrincipalHandler并接受像所有其他服务器那样的用户名呢?
我在JBoss 6.0 AS上的localhost上部署了一个应用程序.此应用程序有一个名为ExampleEJB的远程EJB bean.现在我正在尝试编写一个使用ExampleEJB的简单客户端应用程序.此客户端应用程序不会部署在任何应用程序服务器上.我们的想法是编写一个简单的Java SE客户端程序.我写了以下尝试执行查找:
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL,"localhost:1099");
env.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
InitialContext ic = new InitialContext(env);
Run Code Online (Sandbox Code Playgroud)
在这一点上,我尝试了两种方法.第一种方法是执行直接查找,例如Java EE 6 Tutorial(http://docs.oracle.com/javaee/6/tutorial/doc/gipjf.html):
ExampleEJB exampleEJB = (ExampleEJB) ic.lookup("java:global/myApp/ExampleEJB");
Run Code Online (Sandbox Code Playgroud)
第二次尝试是尝试获取JNDI上下文环境,然后从这个环境中获取所需的bean:
Context envContext = (Context)ic.lookup("java:/comp/env");
envContext.lookup(...)
Run Code Online (Sandbox Code Playgroud)
问题是我收到以下异常:"javax.naming.NameNotFoundException:global not bound"和"javax.naming.NameNotFoundException:comp not bound".我无法按要求执行查找.
有人有线索吗?
java ×6
java-ee ×4
angularjs ×1
classloader ×1
cookies ×1
eclipse ×1
event-driven ×1
flash-scope ×1
io ×1
jaspic ×1
javascript ×1
jboss6.x ×1
jndi ×1
jsf-2 ×1
less ×1
maven ×1
performance ×1
redirect ×1
websphere ×1
websphere-8 ×1
wro4j ×1