2

この問題に一致する可能性のあるものがいくつか見つかりましたが、うまくいくものはありません。

Apache Camel を使用して、ファイルを電子メールの添付ファイルとして配信しています。次のmavenの目標を使用して完全に機能します。

桟橋:実行 桟橋:実行-爆発 桟橋:実行-戦争

Java 1.6 を使用しています。私の展開コンテナーは tomcat6 です。tomcat6 と tomcat7 では、次の例外が発生します。

org.springframework.mail.MailSendException: 失敗したメッセージ: javax.mail.MessagingException: 開始境界がありません。メッセージ例外の詳細 (1) は次のとおりです: 失敗したメッセージ 1: javax.mail.MessagingException: javax.mail.internet.MimeMultipart.parsebm(MimeMultipart.java:882) で開始境界がありません

Web 上のアドバイスは、これがクラス ローダーの問題であることを示唆しています。activation-1.1.jar または mail-1.4.4.jar ファイルが見つからないか、mail-1.4.4.jar 内の mailcap ファイルが見つからないかのいずれかです。

これらのjarファイルをtomcat/libに入れてみました。mailcap を jar ファイルから爆発した戦争の META-INF ディレクトリにコピーしようとしました。これらのどちらも違いはありません。

バージョン:

Windows: Apache Tomcat/7.0.5 JDK 1.6.0_27-b07 Apache Camel 2.8.0-fuse-00-08

Linux - ubuntu 10.04 LTS に付属するバージョン - これらは後で確認して追加します。

これは私のキャメル ルートの簡易版です。

<route id="uploadFileForm">
    <from uri="jetty:http://0.0.0.0:9095/premier"/>
    <to uri="velocity:form.html"/>
</route>
<route id="uploadFile">
    <from uri="jetty:http://0.0.0.0:9095/fup"/>
    <to uri="log:mail?showBody=true&amp;showHeaders=true"/>
    <to uri="smtp://localhost"/>
    <setHeader headerName="content-type"><constant>text/plain</constant></setHeader>
    <setBody><constant>Message Sent</constant></setBody>
</route>

これはログが示すものです:

[4 - seda://mail-ws-audio-files] メール INFO Exchange[ExchangePattern:InOut, Headers:{Connection=Keep-Alive, CamelHttpServletRequest=org.eclipse.jetty.servlets.MultiPartFilter$Wrapper@bb32c5, upfile= D:downloads!37SQFTS.pdf, CamelHttpPath=/fup, subject=BBC Premier League Update - Edition 1, CamelHttpQuery=null, CamelHttpServletResponse=HTTP/1.1 200

、UntilMessage=until 10:30 GMT (月~金のみ)、Host=localhost:9095、User-Agent=Mozilla/4.0 (互換性あり; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E), Accept-Encoding=gzip, deflate, bulletin_type=am, to=julian.cable@ yahoo.com、cc=admin@localhost、breadcrumbId=ID-B1-L0N336601-58958-1335935026761-0-2、CamelHttpUrl=http://localhost:9095/fup、Content-Length=24896、Referer=http:// localhost:9095/premier, from=jfbcable@gmail.com, Accept=image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel、application/vnd.ms-powerpoint、application/msword、*/*、Accept-Language=en-GB、Content-Type=multipart/form-data; 境界= ----------------------------7dc3a8371906f6、

    私たちのファイルの最新版を添付してください。

最小限のMavenプロジェクトの例はここにあり、戦争はここにあります。プロジェクトを Eclipse または

mvn jetty:run

次に、 http://localhost:9095/premierのフォームを使用します

「サーバーに接続できません」という例外が発生します。しかし、war を tomcat にデプロイすると、不足している開始境界の例外が発生します。applicationContext.xml を編集して* * を有効な値に置き換えると、実際に電子メールが送信されます。

何か案は?

4

2 に答える 2

0

私は自分の問題に対する実用的な解決策を持っていますが、私の質問に対する答えはありません。私の元のルートセットは、Tomcatを除いて、試したすべての方法で機能し、(私自身の)Javaコードを必要としません。

私はブルートフォースアプローチを採用し、突堤によって生成されたアタッチメントをボディに移動し、ルートの後半でアタッチメントに戻しました。それは私が展開できる何かに私を連れて行きます、しかしそれはハックです。

Tomcat6で設定された元のルートをデプロイする方法をまだ探しています。

于 2012-05-03T07:44:44.257 に答える
0

単純化されたキャメル ルート サンプルを試してみましたが、mvn jetty:run でうまく動作します。

私のTomcat 7.0.27、Java 6では、実際に動作します。メールは正しく送信されました。唯一の違いは、次のものを使用しないことです。

mvn install

代わりに次を使用します。

mvn package

次に、target/test-mail-0.0.1-SNAPSHOT.war を Tomcat webapps フォルダーにコピーし、tomcat (bin/startup.sh または bin/startup.bat) を開始します。

これがあなたにとってもうまくいくことを願っています。

私が持っていたものと同じ Tomcat バージョンを選択し、同じ手順に従うことをお勧めします。

あなたがすべき他の問題の原因:

  1. 環境変数CATALINA_HOMEまたはCATALINA_BASEが他のTomcatインストールを指すように設定されているかどうかを確認してください。
  2. また、環境変数で、JRE_HOME または JAVA_HOME (JDK を使用している場合) の内容、および CLASSPATH 変数を確認します。クラスパスを $JAVA_HOME/jre/lib:$JAVA_HOME/jre/lib/ext: に設定する必要があります。または %JAVA_HOME%/jre/lib;%JAVA_HOME%/jre/lib/ext;. (最後のドットは非常に重要です)
  3. JRE のみで実行している場合は、JAVA_HOME/lib を JRE_HOME に置き換えます。
  4. 実行している JVM のバージョン。Oracle JDK 6 を使用しています。OpenJDK/J9 などを使用していますか?
于 2012-05-15T18:10:57.793 に答える