我们一直在使用 apache commons net FTP 类通过代理连接到位于我们网络外部的 Sterling commerce FTP 网关以提取文件。我们不列出文件,因为我们知道要拉取的文件的名称,因此我们使用以下方法直接拉取它。
boolean isTransferred = ftp.retrieveFile(remoteFileName, 输出文件);
它已经运行了 3 年,自过去两周以来我们一直面临问题。错误发生在上面一行,并且是
org.apache.commons.net.ftp.FTPConnectionClosedException:收到 FTP 响应 421。服务器关闭连接。org.apache.commons.net.ftp.FTP.__getReply(FTP.java:347) org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:450) org.apache.commons.net.ftp。 FTP.sendCommand(FTP.java:478) org.apache.commons.net.ftp.FTPClient。openDataConnection (FTPClient.java:476) org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1228)
自过去两周以来,我们间歇性地面临这些问题,但不确定其根本原因是什么。双方都没有任何改变。有什么想法可能是什么问题吗?
谢谢,拉维
我的问题是我在 .html 页面中有一个表单,它激活了一个名为 CodeSubmission 的 servlet。起初,我使用 3.0 API 实现(仅使用@WebServlet("/CodeSubmission")),但是每当 servlet 被激活时,请求就没有任何参数。所以我决定尝试一下,在一个全新的项目中使用 2.5 API(通过手动将 servlet 添加到 web.xml 文件),但同样,每当调用 servlet 时,请求都没有任何参数。
我还认为这是因为文件上传字段,但即使删除它后,选择字段也不会作为请求参数出现。
这是html表单代码:
<form action="CodeSubmission" method="POST" enctype="multipart/form-data">
<label for="compiler">Compilador:</label>
<select id="compiler">
<option value="c">C</option>
<option value="c++">C++</option>
<option value="scala7">Scala 2.7.7</option>
<option value="scala8">Scala 2.8.1</option>
<option value="java5">Java 1.5</option>
<option value="java6">Java 1.6</option>
</select>
<br />
<label for="code">Arquivo:</label>
<input id="code" type="file" size=80 />
<br />
<input type="submit" value="Enviar" />
</form>
Run Code Online (Sandbox Code Playgroud)
这是检查参数的测试代码:
System.out.println("Length: "+request.getContentLength());
System.out.println("Content Type: "+request.getContentType());
System.out.println("Method: "+request.getMethod());
Enumeration<String> attributeNames = request.getAttributeNames();
System.out.println("Request Attributes");
while (attributeNames.hasMoreElements()) …Run Code Online (Sandbox Code Playgroud) 我想获得最多包含页面大小元素的列表l的子列表,到目前为止我是这样做的:
l.subList(first, (l.size() > first + pagesize) ? pagesize : l.size())
Run Code Online (Sandbox Code Playgroud)
Apache commons 中是否有一个方便的方法,使我的代码更具可读性?
我想知道是否有办法使用 Apache commons-collection 库中的比较器找到集合的最小值或最大值。使用 Guava 与此等效的东西:
return Ordering.from(comparator).max(collection);
Run Code Online (Sandbox Code Playgroud) Java有一个接口Comparator<T>,它有一个方法int compare(T o1, T o2).
编辑:
我错了:
返回的整数必须是
-1第一个对象小于第二个,1如果第二个小于第一个,0如果它们相等.
文件说:
第一个参数的负整数,零或正整数小于,等于或大于第二个参数.
所以我重新提出我的问题:是否有更优雅的方式来比较对象,而不是记住comparator.compare(o1, o2) < 0实际意味着第一个对象小于第二个对象?
尝试将 SAML 解码从使用 apache commons 升级为使用内置 Java 8 类。使用 Java 时失败。
有没有办法让Java像apache一样工作?
谁能解释为什么这些不同?
今天是个好日子。
我有一个字母数字值。例如:“-00000050.43”。我需要将其转换为 BigDecimal(首选,因为它是 $ 的数量)或 Float 或 Double(取决于“.”后的位数。通常有两位数),例如“-50.43”。因此,我有 3 种不同的正字母数字值解决方案。请参阅下面的内容:
正则表达式
"00000050.43".replaceFirst("^0+(?!$)", "")
Run Code Online (Sandbox Code Playgroud)
阿帕奇共享区
StringUtils.stripStart("00000050.43","0");
Run Code Online (Sandbox Code Playgroud)
和谷歌番石榴
CharMatcher.is('0').trimLeadingFrom("00000050.43")
Run Code Online (Sandbox Code Playgroud)
它不适用于负值。不幸的是,我一开始就不知道如何处理“-”。多谢你们!祝你有美好的一天。
我有代码将文件上传到服务器.
import org.apache.commons.net.ftp.FTPClient;
import java.io.File;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPFile;
import java.io.FileInputStream;
import java.net.SocketException;
public class FtpConnectDemo {
public static void main(String[] args) throws SocketException, IOException{
FTPClient client = new FTPClient();
FileInputStream fis = null;
client.connect("ftp.someserver.co.uk",21);
boolean login = client.login("webmaster@someserver.co.uk",
"mypassword");
String filename = "E:/workbench j2ee/cPEP_UI/WebContent/engine.xml";
client.storeFile(filename, fis);
client.logout();
fis.close();
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,它给了我这个错误:
Exception in thread "main" java.lang.NullPointerException
at FtpConnectDemo.main(FtpConnectDemo.java:22)
Run Code Online (Sandbox Code Playgroud)
用户名,密码,服务器名称都可以.那怎么了?我可以使用telnet连接到FTP.有任何想法吗?
好的,现在我没有得到nullpointer异常,因为我初始化了fis.但我的文件尚未上传; 可能是什么问题?
我正在寻找一种有效的方法来获取从多个字符串中提取的字符串标记列表(例如,使用空格分隔符).
例:
String s1 = "My mom cook everyday";
String s2 = "I eat everyday";
String s3 = "Am I fat?";
LinkedList<String> tokens = new LinkedList<String>();
//any code to efficiently get the tokens
//final result is tokens make of a list of the following tokens:
//"My", "mom", "cook", "everyday", "I", "eat", "everyday", "Am", "I", "fat?".
Run Code Online (Sandbox Code Playgroud)
现在
LinkedList是最有效的集合类(Apache Commons,Guava,他们可以帮忙吗?)!StringUtils从Apache Commons 使用,但该split方法返回一个数组!所以,我应该从一个for循环中提取由split返回的String对象数组中的字符串.这是有效的:我不知道,split创建一个阵列!Splitter从番石榴那里读到了,但这篇文章指出StringUtils在实践中更好.Scanner从Java.util …示例:这是我的字符串,
String sample = "s5656";
Run Code Online (Sandbox Code Playgroud)
如果字符串的第一个字符包含's'或'p'或'r'表示我应该删除该字符,否则我必须返回原始字符串.
是否有任何优化的方法来实现这一点,如apache普通的"正则表达式"或"StringUtils"?
apache-commons ×10
java ×9
guava ×3
ftp ×2
regex ×2
base64 ×1
commerce ×1
connect ×1
file-upload ×1
list ×1
networking ×1
saml-2.0 ×1
servlets ×1
string ×1
tokenize ×1