Как открыть файл без расширения по URL, развернутому на JBoss

Требовать прочитать плоский файл, который не имеет никакого расширения через URL, не может получить его, так как браузер (404) и java(FileNotFoundException) не принимают файл в качестве ресурса для открытия.

import java.net.*;
import java.io.*;

public class URLTest {

public static void main(String[] args) {
/*Block 1: Reading a file "test.txt" (WITH extension) that works */
    try{   System.out.println("Block 1");
           URL url1 = new URL("http://localhost:8080/CtxPath/test.txt"); //file test.txt available at WebContent
           BufferedReader in = new BufferedReader(new InputStreamReader(url1.openStream()));
           String inputLine;
           while ((inputLine = in.readLine()) != null)
           System.out.println(inputLine);
           in.close();
       } catch(Exception e) { e.printStackTrace(); }

/* Block 2 : Reading the other one "test" (WITHOUT extension) that throws Exception */
    try{    System.out.println("Block 2");
            URL url2 = new URL("http://localhost:8080/CtxPath/test"); ////file test also available at WebContent
            BufferedReader in = new BufferedReader(new InputStreamReader(url2.openStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
            in.close();
       }  catch(Exception e) {  e.printStackTrace(); }
 }
}

Выход

Блок 1 
Содержимое файла из test.txt успешно прочитано.
Блок 2
java.io.FileNotFoundException: http://localhost:8080/CtxPath/test
    на sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1624)
    на java.net.URL.openStream(URL.java:1037)
    на URLTest.main (URLTest.java:28) 

Jboss 5.1 Java 1.7

Получение исключения по открытому URL для файла (тест) без расширения. Другой файл с расширением.txt (test.txt), помещенный в то же место с аналогичным содержимым, открывается без каких-либо проблем.

Существует ли какая-либо конкретная программа или конфигурация сервера, позволяющая обслуживать файл без расширения?

3 ответа

В реализации контейнера сервлетов вещи без суффикса "test" не обрабатываются как файл, а рассматриваются как отображение сервлета.
Вы можете скачать исходный код tomcat, логика которого аналогична в jboss, и посмотреть.
И я не думаю, что вы должны создавать файл без суффикса, если вам действительно нужно, затем поместите его в WEB-INF/xxx/, а затем используйте сервлет, чтобы помочь прочитать его.

Java просто вызывает URL. Не важно, есть ли у него . в пути. Сервер, с которым вы звоните, с другой стороны, / может / имеет логику, которая определяет, как он пытается выполнить запрос. FileNotFoundException указывает на 404 http код состояния был возвращен.

Возможно, у файла есть расширение, которое вы не сможете увидеть, потому что настройки операционной системы скрывают расширения, или некоторые правила на вашем сервере могут привести к его возвращению 404. Java не дает файлу не найденное исключение из-за расширения.

Пожалуйста, дайте нам знать проблему, когда вы решите ее.

Другие вопросы по тегам