J'essaie d'écrire du code qui lit les courriels et fournit des services Web reposants.Apache Jax-RS rompt printemps-intégration-mail
J'ai un fichier de test simple qui lit les messages de Gmail (over pop). Cependant, il semble que lorsque j'ajoute cxf-rf-frontend-jaxrs à mon fichier pom.xml, cela empêche le fonctionnement de ce fichier de test.
Toute personne capable de démêler cela?
Merci, du code et d'autres choses.
L'erreur est:
org.springframework.integration.core.MessagingException: failure occurred while receiving from folder
at org.springframework.integration.mail.AbstractMailReceiver.receive(AbstractMailReceiver.java:173)
at mail.GmailManualTester.testPop(GmailManualTester.java:36)
Caused by: java.lang.NullPointerException
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1166)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1135)
at javax.mail.internet.MimeMessage.<init>(MimeMessage.java:182)
at org.springframework.integration.mail.Pop3MailReceiver.deleteMessages(Pop3MailReceiver.java:78)
at org.springframework.integration.mail.AbstractMailReceiver.receive(AbstractMailReceiver.java:164)
Le fichier test src/test/java/mail/GmailManualTester.java
package mail;
import java.util.Properties;
import javax.mail.Message;
import org.junit.Test;
import org.springframework.integration.mail.Pop3MailReceiver;
public class GmailManualTester {
@Test
public void testPop() throws Exception {
Pop3MailReceiver mail = new Pop3MailReceiver(
"pop3://USERNAME%40DOMAIN:[email protected]:995/INBOX");
Properties props = new Properties();
props.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.pop3.socketFactory.fallback", "false");
mail.setJavaMailProperties(props);
Message[] messages = mail.receive();
System.out.println("Got " + messages.length + " messages");
for (Message message : messages) {
System.out.println("Subject: " + message.getSubject());
}
}
}
et le pom.xml est
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sf</groupId>
<artifactId>boom</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>Example</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mail</artifactId>
<version>1.0.2SR1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<debug>false</debug>
</configuration>
</plugin>
</plugins>
</build>
</project>
Edit: a pris toutes les dépendances du fichier ~/.m2 /.../ cxf-rt-frontend-jaxrs-2.3.0.pom et les a placées dans mon propre fichier pom.xml en tant qu'exclusions. Je les ai allumés et éteints jusqu'à ce que j'en trouve un seul:
Si je mets ceci dans mon fichier pom, je peux récupérer des messages. Si je commente, je reçois l'erreur d'en haut. Encore besoin de creuser plus loin dans cela maintenant, cependant. Excluant cela brise probablement les services Web dans mon application.
<exclusion>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-core</artifactId>
</exclusion>
Il n'y a pas d'erreur s'il n'y a pas de messages - seulement s'il y a un message en attente. – woddle