Cấu hình của tôi:tôi nhận được java.net.SocketException: Permission denied: kết nối khi gửi một email trong Jenkins
- Windows 7 máy
- Java 7
- Jenkins 1,511 chạy như dịch vụ trên tài khoản Local
tập tin jenkins.xml My
<service>
<id>jenkins</id>
<name>Jenkins</name>
<env name="JENKINS_HOME" value="%BASE%"/>
<executable>C:\Program Files\IBM\SDP8.5\jdk\bin\java.exe</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 -Djava.net.preferIPv4Stack=true</arguments>
</service>
tập tin hudson.tasks.Mailer.xml My
<hudson.tasks.Mailer_-DescriptorImpl plugin="[email protected]">
<defaultSuffix>@example.com</defaultSuffix>
<hudsonUrl>http://localhost:8081/</hudsonUrl>
<adminAddress>Jenkins Build Server <[email protected]></adminAddress>
<smtpHost>smtp.example.com</smtpHost>
<useSsl>false</useSsl>
<charset>UTF-8</charset>
</hudson.tasks.Mailer_-DescriptorImpl>
Lưu ý: "example.com" thay cho email/máy chủ miền thực/smtp của tôi.
Khi tôi hướng dẫn Jenkins để gửi một email thử nghiệm, tôi nhận được lỗi này:
Failed to send out e-mail
javax.mail.MessagingException: Could not connect to SMTP host: smtp.example.com, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:295)
hiểu biết của tôi với lỗi này, là có một lỗi trong Windows mà được tiếp xúc bởi Java 7 liên quan đến các Tường lửa và cách Java 7 sử dụng địa chỉ ipv6 được ánh xạ ipv4.
Điều này được báo cáo là được giải quyết bằng cách thêm -Djava.net.preferIPv4Stack = true vào thời gian chạy java. Tôi đã thành công với việc thêm -Djava.net.preferIPv4Stack = true trên máy này bằng cách sử dụng tác vụ email ANT. Tuy nhiên, ở Jenkins, tôi không có may mắn.
Lưu ý rằng dường như tệp jenkins.xml bị bỏ qua hoàn toàn. Tham số -Djava.net.preferIPv4Stack = true không được thiết lập. PATH và JAVA_HOME đều hướng đến thời gian chạy của IBM, nhưng Jenkins vẫn bắt đầu với thời gian chạy Oracle v7. Jenkins phải sinh ra một quy trình mới để bắt đầu và chọn hệ thống java 7.
Sử dụng cấu hình ở trên, nếu tôi vào giao diện điều khiển kịch bản Jenkins và thẩm vấn nó bằng cách sử dụng "System.getProperty (" java.net.preferIPv4Stack "), Tôi nhận được không có gì (không được thiết lập) .Nếu tôi đặt tham số đó, tôi vẫn nhận được lỗi.Nếu tôi thêm -Djava.net.preferIPv4Stack = true vào dòng lệnh (không sử dụng dịch vụ), nó vẫn không được đặt khi thẩm vấn thông qua các kịch bản console.
câu hỏi của tôi
Tại sao tôi nhận được lỗi này và làm thế nào để tôi giải quyết nó nhớ rằng tôi có thể WRI? te một kịch bản ANT gửi thành công email bằng cách sử dụng cùng một máy chủ smtp và thời gian chạy java.
Làm cách nào để khởi động Jenkins với tham số -Djava.net.preferIPv4Stack = true và thời gian chạy được chỉ định?
Một vài chú ý:
- Tôi không thể gỡ bỏ cài đặt Java 7 do các vấn đề của công ty què.
- Tôi không thể cài đặt Java 6 do cùng một vấn đề.
- Tôi được phép cài đặt IBM JDK/JRE.
Bạn đã thử di chuyển '-Djava.net.preferIPv4Stack = true' trước đối số' -jar' chưa? – NilsH
Điều này đã hiệu quả! Cảm ơn. Bạn có thể đặt nó như là một câu trả lời để tôi có thể kiểm tra nó như là câu trả lời tốt nhất? –