Принятый ответ нарушит все функциональные возможности, которые предлагает SoapClient. Как установка правильных заголовков контента, аутентификация и т. Д.
Это было бы лучшим решением проблемы
class MySoapClient extends \SoapClient
{
private $timeout = 10;
public function __construct($wsdl, array $options)
{
// Defines a timeout in seconds for the connection to the SOAP service.
// This option does not define a timeout for services with slow responses.
// To limit the time to wait for calls to finish the default_socket_timeout setting is available.
if (!isset($options['connection_timeout'])) {
$options['connection_timeout'] = $this->timeout;
}
parent::__construct($wsdl, $options);
}
public function setTimeout($timeout)
{
$this->timeout = $timeout;
}
public function __doRequest($request, $location, $action, $version, $one_way = 0)
{
$original = ini_get('default_socket_timeout');
ini_set('default_socket_timeout', $this->timeout);
$response = parent::__doRequest($request, $location, $action, $version, $one_way);
ini_set('default_socket_timeout', $original);
return $response;
}
}
Вы можете использовать Ant для установки, компиляции, WAR и развертывания решения.
<target name="default" depends="setup,compile,buildwar,deploy"></target>
Затем вы можете выполнить один щелчок в Eclipse для запуска этой цели Ant. Вот примеры каждого из шагов:
Мы предполагаем, что ваш код организован следующим образом:
$ {basedir} / src
: файлы Java, свойства, файлы конфигурации XML $ {basedir} / web
: ваши файлы JSP $ {basedir} / web / lib
: любые файлы JAR, необходимые во время выполнения $ {basedir} / web / META-INF
: Ваш манифест $ {basedir} / web / WEB-INF
: Ваши файлы web.xml Определить задачу setup
, которая создает каталог распространения и копирует любые артефакты, которые нужно напрямую использовать WARred:
Если вы не знаете, что делать, и начинаете с нуля, Maven может помочь вам начать работу.
Выполнив следующие шаги, вы можете идеально настроить новый военный проект в eclipse .
mvn archetype: generate
mvn eclipse: eclipse
mvn package
, или развернуть ее, настроив сервер в eclipse и просто добавив проект на сервер. Как говорили некоторые другие, обратная сторона использования maven заключается в том, что вы должны использовать соглашения maven. Но я думаю, что если вы только начинаете, изучите условные обозначения, прежде чем создавать свои собственные. Ничто не мешает вам изменить / провести рефакторинг на ваш собственный предпочтительный метод позже.
Надеюсь, это поможет.
Как говорили некоторые другие, обратная сторона использования maven заключается в том, что вы должны использовать соглашения maven. Но я думаю, что если вы только начинаете, изучите условные обозначения, прежде чем создавать свои собственные. Ничто не мешает вам изменить / провести рефакторинг на ваш собственный предпочтительный метод позже.
Надеюсь, это поможет.
Как говорили некоторые другие, обратная сторона использования maven заключается в том, что вы должны использовать соглашения maven. Но я думаю, что если вы только начинаете, изучите условные обозначения, прежде чем создавать свои собственные. Ничто не мешает вам изменить / провести рефакторинг на ваш собственный предпочтительный метод позже.
Надеюсь, это поможет.
War-файл - это просто jar-файл с расширением war, но то, что заставляет его работать, - это то, как на самом деле структурировано содержимое.
Учебник J2EE / Java EE может быть началом:
http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents3.html
И спецификация сервлета содержит подробные сведения:
http://java.sun.com /products/servlet/download.html
Если вы создаете новый веб-проект в Eclipse (я имею в виду версию Java EE), структура создается для вас, и вы также можете указать ей, где установлен ваш сервер приложений, и развернет и запустит приложение за вас.
Использование опции «Экспорт-> WAR-файл» позволит вам сохранить военный файл.
I've always just selected Export from Eclipse. It builds the war file and includes all necessary files. Providing you created the project as a web project that's all you'll need to do. Eclipse makes it very simple to do.
Мы используем Maven (старший брат Ant) для всех наших java-проектов, и у него есть очень изящный плагин WAR. Здесь можно найти учебные материалы и их использование.
Это намного проще, чем Ant, полностью совместим с Eclipse (используйте maven eclipse: eclipse для создания проектов Eclipse) и прост в настройке.
Пример конфигурации:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-2</version>
<configuration>
<outputDirectory>${project.build.directory}/tmp/</outputDirectory>
<workDirectory>${project.build.directory}/tmp/war/work</workDirectory>
<webappDirectory>${project.build.webappDirectory}</webappDirectory>
<cacheFile>${project.build.directory}/tmp/war/work/webapp-cache.xml</cacheFile>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
<nonFilteredFileExtension>png</nonFilteredFileExtension>
<nonFilteredFileExtension>gif</nonFilteredFileExtension>
<nonFilteredFileExtension>jsp</nonFilteredFileExtension>
</nonFilteredFileExtensions>
<webResources>
<resource>
<directory>src/main/webapp/</directory>
<targetPath>WEB-INF</targetPath>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</webResources>
<warName>Application</warName>
</configuration>
</plugin>
Использовать код сборки ant Я использую это для своего проекта SMS
<property name="WEB-INF" value="${basedir}/WebRoot/WEB-INF" />
<property name="OUT" value="${basedir}/out" />
<property name="WAR_FILE_NAME" value="mywebapplication.war" />
<property name="TEMP" value="${basedir}/temp" />
<target name="help">
<echo>
--------------------------------------------------
compile - Compile
archive - Generate WAR file
--------------------------------------------------
</echo>
</target>
<target name="init">
<delete dir="${WEB-INF}/classes" />
<mkdir dir="${WEB-INF}/classes" />
</target>
<target name="compile" depends="init">
<javac srcdir="${basedir}/src"
destdir="${WEB-INF}/classes"
classpathref="libs">
</javac>
</target>
<target name="archive" depends="compile">
<delete dir="${OUT}" />
<mkdir dir="${OUT}" />
<delete dir="${TEMP}" />
<mkdir dir="${TEMP}" />
<copy todir="${TEMP}" >
<fileset dir="${basedir}/WebRoot">
</fileset>
</copy>
<move file="${TEMP}/log4j.properties"
todir="${TEMP}/WEB-INF/classes" />
<war destfile="${OUT}/${WAR_FILE_NAME}"
basedir="${TEMP}"
compress="true"
webxml="${TEMP}/WEB-INF/web.xml" />
<delete dir="${TEMP}" />
</target>
<path id="libs">
<fileset includes="*.jar" dir="${WEB-INF}/lib" />
</path>