able to deploy my application directly from the workspace
bad news is that JBoss AS 7 does not currently support other persistence providers like Eclipselink, OpenJPA or DataNucleus
GlassFish and Resin, you can simply drop the JARs of your preferred provider and its dependencies in a designated folder of your server installation and edit your persistence.xml to override the default provider of the server
JBoss AS 7 appears to require an adapter per persistence provider, which to me looks like an unfortunate and unnecessary design decision
potential to take over the lead from GlassFish
documentation continues to be sketchy and far below the standard of JBoss AS 5
surprisingly lean and fast
top-level performance
classloader leaks
productivity issues of the Eclipse integration
lack of support for JPA providers other than Hibernate
Each of these is currently a blocker for using JBoss AS 7 in production
Redeployment
after a couple of redeployments, there was an OutOfMemoryError
new classloader leak
JBoss AS 7: Catching up with Java EE 6
Performance measurements
JBoss AS 7.0.2
GlassFish 3.1.1
Empty server startup time 1.9 s
3.2 s
Empty server heap memory 10.5 MB
26.5 MB
Empty server PermGen memory 36.3 MB
28.4 MB
MyApp deployment time 5.8 s
JBoss AS 7 is now at a competitive level with Resin and Glassfish and actually outperforms Glassfish in almost all of these tests
The discussion whether or not to use Spring vs. Java EE for new enterprise Java applications is a no-brainer
Why migrate?
since then fallen a prey to the hungry minds of Venture Capitalists and finally into the hands of a virtualization company called VMware
While the different companies and individuals behind the Spring framework have been doing some work in the JCP their voting behavior on important JSRs is peculiar to say the least
outdated ORM solution like JDBC templates
some developers completely stopped looking at new developments in the Java EE space and might have lost track of the current state of technology
size of the deployment archive
fairly standard Java EE 6 application will take up about 100 kilobytes
comparable Spring application weighs in at a whopping 30 Megabytes!
Lightweight
Firing up the latest JBoss AS 7 Application Server from scratch and deploying a full blown Java EE 6 application into the server takes somewhere between two and five seconds on a standard machine. This is in the same league as a Tomcat / Spring combo
Dependency injection
Java EE 6, the Context and Dependency Injection (CDI) specification was introduced to the Java platform, which has a very powerful contextual DI model adding extensibility of injectable enterprise services
Aspect Oriented Programming
“AOP Light” and this is exactly what Java EE Interceptors do
common pitfall when taking AOP too far is that your code might end up all asymmetric and unreadable. This is due to the fact that the aspect and its implementation are not in the same place. Determining what a piece of code will do at runtime at a glance will be really hard
Testing
With Arquillian we can get rid of mocking frameworks and test Java EE components in their natural environment
Tooling
capabilities comparison matrix below to map Spring’s technology to that of Java EE
Capability
Spring
JavaEE
Dependency Injection
Spring Container
CDI
Transactions
AOP / annotations
EJB
Web framework
Spring Web MVC
JSF
AOP
AspectJ (limited to Spring beans)
Interceptors
Messaging
JMS
JMS / CDI
Data Access
JDBC templates / other ORM / JPA
JPA
RESTful Web Services
Spring Web MVC (3.0)
JAX-RS
Integration testing
Spring Test framework
Arquillian *
JPA applications that create an EntityManagerFactory on their own, either using the PersistenceProvider SPI directly or through an intermediary mechanism such as Spring's LocalContainerEntityManagerFactoryBean
standard Java EE-applications may ignore the provider implementation and rely on the standard features provided by the container - JBoss AS7 supporting standard JPA 1.0 and 2.0
future versions of JBoss AS7 it will be possible to use alternative persistence provider implementations
Using Shiro for Authorization via CDI Interceptors then Easily Test with Arquillian
Did you know Apache Shiro is an easy-to-use security
@Secured @NamedResource("contact")
Interceptors will be ignored by CDI container unless it is listed in beans.xml
Tells the security interceptor to check the permission using "contact" as the resource name, not "contactmanager" inflected from the class name ContactManager
mime-mapping is complex field and not resource. that is why it has its own operation handlers add-mime/remove-mime to handle its value. what are you trying to achive can be done by command:
Just bit of a warning when using this, there was a bug in 7.1.1 when you added mime type that prevented server to start.so please use 7.1.2 or 7.2 nightly builds where this is fixed.
mime-mapping
That is the mapping of file extension to the Content-Type mime header.
Most of the current file extensions are already hard coded in the web subsystem, you
only need to add a mime-mapping is you want to overwrite the default mapping for
a file extension or add a new file extension to the mapping.
See below for more.
There could be more than one mime-mapping per configuration.
mime-mapping
The mime-mapping of configurationWeb SubSystem supports the following attributes:
AttributeDescriptionname
File extension to map.
value
Value to use.
start with some of the obvious rulesets - just run unusedcode
and fix any unused locals and fields.
Then, run basic and fix all the empty if statements and such-like.
Then peruse the design and
controversial rulesets and use the ones
you like via a custom ruleset
Using PMD within your IDE is much more enjoyable than flipping back and forth
between an HTML report and your IDE