小编Ral*_*lph的帖子

Tomcat中JNDI的Java Mail API配置文档

我花了几天的时间来弄清楚如何通过JNDI在Tomcat中配置javax.mail.Session并进行身份验证,现在我得到了它,但只是在深入研究代码之后.

在这段时间里,我看到了有史以来最糟糕的代码:javax.mail.Service #connect(String,String,String,String)Version 1.4.1

    if (user == null) {
    user = url.getUsername();
    if (password == null)   // get password too if we need it
        password = url.getPassword();
    } else {
    if (password == null && user.equals(url.getUsername()))
        // only get the password if it matches the username
        password = url.getPassword();
    }
Run Code Online (Sandbox Code Playgroud)

密码何时分配?为什么两次检查null? - 然后意识到其他不属于如果以上.(这是原始的缩进).回到主题.

至少我发现正确的资源定义是:

<Resource name="email/session"
    type="javax.mail.Session"
    auth="Container"
    password="secret"

    mail.debug="false"
    mail.transport.protocol="smtp"

    mail.smtp.auth="true"
    mail.smtp.user="testi"
    mail.smtp.host="smtp.xxx.org"
    mail.smtp.from="test@example.com"       
    />
Run Code Online (Sandbox Code Playgroud)

请注意它是"password"和"mail.smtp.user"或"mail.user"但不是"mail.smtp.password"或"user".

至少神奇是在雄猫队完成的org.apache.naming.factory.MailSessionFactory.javax.mail.Authenticator如果属性password和属性mail.smtp.usermail.user退出,此工厂将添加到邮件会话. …

java tomcat jndi javax.mail

8
推荐指数
1
解决办法
4200
查看次数

在JMock中捕获参数的标准方法

在JMock中是否有一种已经内置的标准方法来捕获方法参数,以便稍后使用标准JUnit功能测试参数对象?

就像是

final CapturedContainer<SimpleMailMessage>capturedArgumentContainer = new ...
context.checking(new Expectations() {{
    oneOf(emailService.getJavaMailSender()).send(
       with(captureTo(capturedArgumentContainer)));
}});

assertEquals("helloWorld", capturedArgumentContainer.getItem().getBody());
Run Code Online (Sandbox Code Playgroud)

CapturedContainer并且captureTo不存在 - 它们就是我要求的.

或者我需要自己实现这个?

java testing junit jmock

8
推荐指数
2
解决办法
3943
查看次数

验证@ScriptAssert可以访问静态方法

JSR303 Bean Validation实现Hibernate-Validator(4.1.0)提供了org.hibernate.validator.constraints.ScriptAssert注释.

我得到了它来调用非静态方法.

@ScriptAssert(script="_this.isComplexSubValid(_this.attributeA,_this.attributeB)",
              lang = "javascript")

...
public boolean isComplexSubValid(Object a, Object b)...
Run Code Online (Sandbox Code Playgroud)

但现在我想将isComplexSubValid静态方法外部化,以便在不同的类中重用它.但是我没有使用javascript验证器进行静态调用.

@ScriptAssert(script="ComplexValidation.isComplexSubValid(_this.attributeA,_this.attributeB)",
              lang = "javascript")

public static boolean isComplexSubValid(Object a, Object b)...
Run Code Online (Sandbox Code Playgroud)

抛出:

isValid调用期间出现意外异常:org.hibernate.validator.engine.ConstraintTree.validateSingleConstraint(ConstraintTree.java:156)org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:140)org.hibernate.validator.metadata. MetaConstraint.validateConstraint(MetaConstraint.java:121)org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:327)org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForRedefinedDefaultGroup(ValidatorImpl.java:273)org.hibernate作为. validator.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:256)org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:210)org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:119) org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:86)org.springframework.validation.DataBinder.validate(DataBinder.java:692)org.springframework.web.bin d.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:807)org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:359)org.springframework.web.bind.annotation.support. HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter. java:414)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)org.springframework.web.servlet.FrameworkServlet. processRequest(FrameworkServlet.java:644)org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:571)javax.servlet.http.HttpServlet.service(HttpServlet.java:640)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 206)org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:113)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)org.apache.catalina.core.ApplicationFilterChain. internalDoFilter(ApplicationFilterChain.java:235)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:368)org.springframework. security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)org.s pringframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:380)org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain. doFilter(FilterChainProxy.java:380)org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:380)org. springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:380)org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter. doFilter(SecurityContextHolderAwareRequestFilter.java:54)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.ja va:380)org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:380)org.springframework.security. web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:380)org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter( AbstractAuthenticationProcessingFilter.java:187)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:380)org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)组织. springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:380)org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityC ontextPersistenceFilter.java:79)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:380)org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)org.springframework.web. filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)组织. apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)de.humanfork.security.crsf.IdempotentCsrfPreventionFilter.doFilter(IdempotentCsrfPreventionFilter.java:99)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 235)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:74)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:206)org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:113)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)org.apache.catalina. core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)org. springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)org.apache.catalina.core.ApplicationFilterC …

java bean-validation

8
推荐指数
1
解决办法
3309
查看次数

显式本地EJB未使用Arquillian注入

我使用Arquillian来测试具有显式本地和远程接口的无状态会话bean.但是在测试中,Arquillian不会在具有本地接口类型的字段中"注入"任何内容,但它适用于远程接口.

@Stateless
public class TestServiceImpl implements TestServiceLocal, TestServiceRemote {
    public String greet() {
        return "hallo";
    }
}
Run Code Online (Sandbox Code Playgroud)

远程接口:

@Remote
public interface TestServiceRemote {
    public String greet();
}
Run Code Online (Sandbox Code Playgroud)

语言环境界面:

@Local
public interface TestServiceLocal {
    public String greet();
}
Run Code Online (Sandbox Code Playgroud)

这是测试:

@RunWith(Arquillian.class)
public class GenericEntityDaoEjbIntegrationTest {

    @Deployment
    public static JavaArchive createTestArchive()
                  throws UnsupportedEncodingException {
        return ShrinkWrap.create(JavaArchive.class, "test.jar")
                .addClasses(
                        TestServiceLocal.class,
                        TestServiceRemote.class,
                        TestServiceImpl.class);
    }

    @EJB
    private TestServiceLocal testServiceLocal;

    @EJB
    private TestServiceRemote testServiceRemote;

    //Will Fail
    @Test
    public void testTestServiceLocal() {
        assertNotNull(this.testServiceLocal);
    }

    //Success    
    @Test
    public void …
Run Code Online (Sandbox Code Playgroud)

java testing java-ee java-ee-6 jboss-arquillian

8
推荐指数
2
解决办法
9416
查看次数

如何避免空表的"SELECT max(rank)FROM test"的null结果?

我需要在JPQL(2.0)中形成一个查询来选择最大值(rank).

我用: SELECT max(rank) FROM test

这工作正常,除了表是空的情况,然后结果是null,但我需要0.

如果我能够用一个简单的if语句"捕获"null,那就不会有问题了,但是我不能这样做(框架只允许指定一个JPA Query但没有java代码).

有没有人知道如何调整该查询以获取0而不是null如果表是空的? - 数据库是MySQL,本机查询或存储过程是不可选的.

java mysql hibernate jpa

8
推荐指数
1
解决办法
2051
查看次数

如何在群集中为一个节点和所有节点运行预定方法?

我有一个在集群和EJB 3.1应用程序中运行的Glassfish 3.1.2.我的应用程序中需要两种计划方法:

  • 一种每天只运行一次(在单个节点上)的一种
  • 和其他在所有节点上运行的类型(每1-2分钟) - 它们不需要运行同步方式!要求只是在每个节点上运行.

我不知道如何从这个集群开始 - 问题,这是可能的@Schedule(以及如何)或我还需要其他什么?

java ejb glassfish cluster-computing java-ee

8
推荐指数
1
解决办法
4027
查看次数

JPA 2嵌入式XML映射使其与Hibernate Meta模型生成器一起工作

我想在Hibernate(版本1.1.1-Final)(在Spring应用程序中)使用JPA 2 Meta模型生成器.因为我使用Mapped Superclass作为所有实体的基础,并且这个类位于不同的jar中(供重用)我需要在XML中显式地映射这个类(仅用于元模型生成,因为它无需任何额外的工作准时的东西)---可能有人提示如何解决这个问题,但这不是问题.

此映射的超类(BusinessEntity)使用嵌入式类(BusinessId).

@SuppressWarnings("serial")
@MappedSuperclass
public abstract class BusinessEntity<T extends Serializable>
                      implements Serializable {
   @Id    
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "id")
   private Long id;

   @Embedded
   private BusinessId<T> businessId;
 ...
}


@Embeddable
public class BusinessId<T> implements Serializable {
    @Column(nullable = false, unique = true, name = "businessId")
    private long businessId;
  ...
}
Run Code Online (Sandbox Code Playgroud)

但我没有得到映射与Generator一起工作:如果我使用它 orm.xml

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
    http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
    version="2.0">

    <mapped-superclass class="BusinessEntity"  
            access="FIELD">     
        <attributes>            
            <id name="id">
                <column nullable="false"/>
                <generated-value strategy="AUTO"/>              
            </id>
            <embedded name="businessId"/>
        </attributes>       
    </mapped-superclass> …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

7
推荐指数
1
解决办法
4996
查看次数

Spring EL变量列表?

Spring EL支持一些预定义的变量

  • {#systemProperties. ... }
  • {#systemEnvironment. ... }
  • {#request. ...}
  • {#session. ...}

前两篇文章记录在Spring Reference:第6章Spring表达语言(SpEL)中.在Spring Reference中没有提到另外两个(或者我没有找到它们.)(我在这张幻灯片中找到了它们,以及它在spring social和this question中的用法).

所以我的问题是:是否有一个或多或少完整的预定义spring-el变量列表?

我想这些预定义变量中的一些并不是由spring core本身定义的,而是通过"激活"某些模块(如spring-mvc)来定义的.所以我对一个或多或少常见的spring + jpa + mvc +安全应用程序中可用的变量感兴趣.

java spring spring-mvc spring-security spring-el

7
推荐指数
2
解决办法
5212
查看次数

如何在Eclipse中为自动配置maven项目中的Checkstyle

我有一个maven-multi项目,当我从它创建一个新的eclipse项目时(来自SCM的M2E 1.0"Checkout Maven项目")我希望自动为该项目配置eclipse checkstyle插件.

所以我添加了maven-eclipse-plugin父pom的 <pluginManagement>部分并将其配置为生成.checkstyle文件以及其他项目性质CheckstyleNature.在模块中我添加maven-eclipse-plugin了构建部分中的名称.但是当我检查项目没有发生任何事情时,文件不会生成,并且不会添加性质.

所以我认为我做的事情完全错了,但它是如何做得对的呢?


父pom - 插件管理部分:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.8</version>
    <configuration>
        <downloadSources>true</downloadSources>
        <downloadJavadocs>false</downloadJavadocs>
        <wtpversion>2.0</wtpversion>
        <additionalBuildcommands>
            <buildCommand>
                <name>org.eclipse.ajdt.core.ajbuilder</name>
                <arguments>
                    <aspectPath>org.springframework.aspects</aspectPath>
                </arguments>
            </buildCommand>
            <buildCommand>
                <name>org.springframework.ide.eclipse.core.springbuilder</name>
            </buildCommand>
        </additionalBuildcommands>
        <additionalProjectnatures>
            <projectnature>org.eclipse.ajdt.ui.ajnature</projectnature>
            <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
            <projectnature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</projectnature>
        </additionalProjectnatures>
        <additionalConfig>
            <file>
                <name>.checkstyle</name>
                <content>
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
  <fileset name="all" enabled="true" check-config-name="My Checkstyle rules" local="false">
    <file-match-pattern match-pattern="." include-pattern="true"/>
  </fileset>
  <filter name="FilesFromPackage" enabled="true">
    <filter-data value="target" />
    <filter-data value="src/main/resources"/>
    <filter-data value="src/test/java"/>
    <filter-data value="src/test/resources"/>
    <filter-data value="src/main/webapp" …
Run Code Online (Sandbox Code Playgroud)

java eclipse checkstyle maven m2e

7
推荐指数
1
解决办法
1万
查看次数

Spring IO这个名字是什么意思?

2013年秋季,Spring推出了新的网站(spring.io)并宣布其新平台" Spring IO ".但这个名称/缩写"IO"是什么意思?

我不是要求任何(技术)描述Spring IO是什么,我只对这个名字感兴趣.

这个问题不是关于网站的名称,而是关于平台的名称! - 它认为名字对编程非常重要,好名字有助于更快地理解程序(清洁代码),所以我希望这个名字不仅仅是一个营销堵嘴

java grails spring spring-io

7
推荐指数
1
解决办法
1564
查看次数