Веб-сервис Java для передачи файла в локальную систему - PullRequest
1 голос
/ 18 октября 2011

Я хочу создать веб-сервис в Java двумя способами

1) для передачи файла из Интернета на локальный файловый сервер, возвращая локальный URL

2) чтобы получить файл с того же сервера, взяв URL

Примечание: он должен работать со всеми форматами

Обязательно использовать веб-сервис Java ..

любой тип: байтовый массив, шестнадцатеричный или MIME-тип передачи в порядке

Размер вложения - 4 МБ.

Я не могу подключиться к базе данных напрямую, поскольку приложение развернуто в DMZ, и единственный способ подключиться к файловому серверу в интрасети - использовать веб-службы.

Соединение с файловым сервером уже установлено ..

Ответы [ 3 ]

2 голосов
/ 21 октября 2011

Поскольку вы пометили этот вопрос как soap, я предполагаю, что вам нужен веб-сервис SOAP на Java. Это также делает JAX-WS (API Java для веб-служб XML) естественным выбором для использования библиотекой. В руководстве по веб-службам *1004* Java (TM) * ваша проблема будет рассмотрена более подробно.

Теперь вам потребуется реализовать логику для получения изображений и обратных URL-адресов, а также для получения URL-адресов и возвращаемых изображений.

@WebService
public class MyJavaWebService {
    @WebMethod
    public String takeImage(byte[] image, String imageName) {
        //You'll need to write a method to save the image to the server.
        //How you actually implement this method is up to you.  You could
        //just open a FileOutputStream and write the image to a file on your
        //local server.
        this.saveImage(image, imageName);
        //Here is where you come up with your URL for the image.
        return this.computeURLForImage(imageName);
    }
    @WebMethod
    public byte[] getImage(String url) {
        final byte[] loadedImage = this.getImage(url);
        return loadedImage;
    }
}

Возможно, вам также потребуется настроить некоторые дополнительные настройки, как описано в Развертывание конечной точки Metro . Суть статьи в том, что вам нужно добавить файл sun-jaxws.xml в папку WEB-INF/ формы

<endpoints
        xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
        version="2.0">
    <endpoint
            name="MyJavaWebService"
            implementation="com.mycompany.MyJavaWebService"
            url-pattern="/MyJavaWebService"/>
</endpoints>

А также добавьте некоторые файлы JAX-WS в свой файл web.xml, например:

<web-app>
    <listener>
        <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
    </listener>
    <servlet>
    <servlet-name>MyJavaWebServiceServlet</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyJavaWebServiceServlet</servlet-name>
        <url-pattern>/MyJavaWebService</url-pattern>
    </servlet-mapping>
</web-app>

Наконец, упакуйте все в файл .war и разверните его на веб-сервере Java (например, Tomcat).

1 голос
/ 21 октября 2011

Если ваша основная проблема заключается в поиске советов по легкой передаче файлов через веб-сервис в java, я бы порекомендовал сервис Hessian, рассмотренный на Hessian с большими двоичными данными (java) публикация на SO.Ссылка там идет на пример, который реализует один вид передачи файлов.

Гессиан - хорошее решение, если вы не хотите слишком много путаться с логикой самих веб-сервисов.Если вы быстро посмотрите гессенский код, вы даже не узнаете, что используете его.Это настолько легковесное решение.

У Стефана есть решение, в котором вы в значительной степени разбираетесь в логике веб-сервисов, поэтому вам решать, какой высокий уровень абстракции вы хотите иметь.Если цель этой задачи - показать, как использовать веб-службы, а не просто заставить их работать, то у Стефана есть ответ.

О загрузке файла и т. Д. Вы хотели сохранить файл из Интернета.Посмотрите это: Как скачать и сохранить файл из Интернета с помощью Java? .При этом используется чистая Java, и, на мой взгляд, не требуется никаких веб-сервисов для выполнения данной задачи, но если вы объедините эти два, вы получите что-то, что работает очень легко!

1 голос
/ 21 октября 2011

Аналогичный сценарий: это , и он объяснил, используя короткий код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...