powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
13 сообщений из 13, страница 1 из 1
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38954950
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.к. у ТС не хватает ума в этой ветке мы совместными, я надеюсь, усилиями будем писать soap веб сервис имея на руках wsdl (в аттачменте, стырила от сюда ). Contract first, так сказать.
Что мы используем:
0. WSDL (не XSD, которые используются в всех пример в интернете)
1. Свою любимую IDE
2. СXF для генерации классов на основе wsdl
3. Maven для порядка и автоматизации сборки
4. Spring WS чтобы быть в тренде
5. Jetty. Не знаю почему.
Атлант расправил плечи. Что нужно получить в результате - jar-ок, который запускается и работает как веб standalone веб сервис на http://localhost:8080/spring-webservices-sample/endpoints. В общем помогите, молю.
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38954980
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а вот и первые успехи:
1. Создан maven проект типа maven-archetype-quickstart.
2. В pom написано:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com-mayacomp</groupId>
  <artifactId>com.mayacomp.ws</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>
|                            <wsdlOptions>
                                <wsdlOption>
                                    <wsdl>C:/workspace/jetws/src/main/resources/Account.wsdl</wsdl>
                                    <extraargs>
                                        <extraarg>-impl</extraarg> 
                                        <extraarg>-p</extraarg>
                                        <extraarg>com.mayacomp.autogensrc</extraarg>
                                    </extraargs>
                                </wsdlOption>
                            </wsdlOptions>
                        </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>


3. При выполнении mvn clean package в папке C:\workspace\jetws\src\main\resources\com\mayacomp\autogensrc создаются классы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Account.java
AccountDetailsRequest.java
AccountDetailsResponse.java
AccountDetailsService.java
AccountDetailsServices.java
AccountDetailsServiceSoap11Impl.java
AccountType.java
EnumAccountStatus.java
ObjectFactory.java
package-info.java
,которые нужно как-то использовать в дальнейшей работе. Вы все еще не хотите провести вечер с пользой?
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38956299
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, теперь у нас есть:
1. Интерфейс
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
package com.maycomp.endpoint;
import com.mayacomp.autogensrc.AccountType;
public interface AccountService {

   /**  
     * Gets the account details.  
     *  
     * @param accountNumber the account number  
     * @return the account details  
     */  
    public AccountType getAccountDetails(String accountNumber);  
	
}


2. Его реализация:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
package com.maycomp.endpoint;
import org.springframework.stereotype.Service;
import com.mayacomp.autogensrc.AccountType;
/**  
 * The Class AccountService.  
 */  
@Service 
public class AccountServiceImpl implements AccountService   {

	/**  
     * Gets the account details.  
     *  
     * @param accountNumber the account number  
     * @return the account details  
     */  
    public AccountType getAccountDetails(String accountNumber)  
    {  
         /* немного hard code*/  
         AccountType account = new AccountType();
    	
         account.setAccountNumber("736352");  
         account.setAccountName("AnyKeyAccount");  
         account.setAccountBalance("10250");  
         return account;  
    }  
	
}


3. и Endpoint
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
package com.maycomp.endpoint;

import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.ws.server.endpoint.annotation.Endpoint;  
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;  
import org.springframework.ws.server.endpoint.annotation.RequestPayload;  
import org.springframework.ws.server.endpoint.annotation.ResponsePayload;  

import com.mayacomp.autogensrc.*; 


@Endpoint
public class WsEndpoint {
	
	 private static final String TARGET_NAMESPACE = "http://webservices.samples.blog.com";  
	        
	 @Autowired  
	       private AccountService accountService_i;  
	        /**  
	         * Gets the account details.  
	         *  
	         * @param accountNumber the account number  
	         * @return the account details  
	          */  
	 
	 
	        @PayloadRoot(localPart = "AccountDetailsRequest", namespace = TARGET_NAMESPACE)  
	        public @ResponsePayload AccountDetailsResponse getAccountDetails(@RequestPayload AccountDetailsRequest request)  
	        {  
	        AccountDetailsResponse response = new AccountDetailsResponse();
	   
	        /* call Spring injected service implementation to retrieve account data */  
	             
 	        AccountType account = accountService_i.getAccountDetails(request.getAccountNumber());  
	        response.setAccountType(account); ;  
	        return response;  
	        }  
	        public void setAccountService(AccountService accountService_p)  
	        {  
	             this.accountService_i = accountService_p;  
	        } 
}
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38956314
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May120. WSDL (не XSD, которые используются в всех пример в интернете)

Для SOAP все примеры только по WSDL. XSD это в примерах для JAXB.

May122. СXF для генерации классов на основе wsdl

JDK/bin/wsimport.exe -keep mywsdl.wsdl

May124. Spring WS чтобы быть в тренде

Почему не CXF?
Spring WS когда-то был очень крут максимальным покрытием всяческих WS фич. Но когда они несколько лет не могли починить Java 6 incompatibility я перестал за ним следить. Разве оно ещё развивается? Чем лучше CXF? Я думал CXF в тренде.
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38956338
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
авторно когда они несколько лет не могли починить Java 6 incompatibility
мне бы знать об этом. У меня есть сервис, реализованный с помощью CXF аннотаций и библиотек. Но, как бы это сказать, у заказчика есть свои предпочтения и пожелания.
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38956344
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12Blazkowicz,
авторно когда они несколько лет не могли починить Java 6 incompatibility
мне бы знать об этом. У меня есть сервис, реализованный с помощью CXF аннотаций и библиотек. Но, как бы это сказать, у заказчика есть свои предпочтения и пожелания.

А зачем заказчику знать "что в нутре неонка"?
Делай как удобно, а заказчику говори, то что он хочет слышать :-)
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38956345
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ разобраться все-таки тоже интересно (если это может быть аргументом).
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38956348
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12авторно когда они несколько лет не могли починить Java 6 incompatibility
мне бы знать об этом.

Ну, это давно было. FAQ посмотрел. Вроде всё норм теперь.

May12У меня есть сервис, реализованный с помощью CXF аннотаций и библиотек. Но, как бы это сказать, у заказчика есть свои предпочтения и пожелания.
Ясно. Просто это не совсем одно и тоже с "чтобы быть в тренде"
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38956529
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,
авторчто в нутре неонка
Что такое неонк? стабильный нуклид химического элемента?

Пост 17628083 не весь опубликовался.
В общем теперь вроде как надо написать файл конфигурации для Spring. В примере он выглядит вот так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
 <?xml version="1.0" encoding="UTF-8"?>  
  <beans xmlns="http://www.springframework.org/schema/beans"  
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
            xmlns:context="http://www.springframework.org/schema/context"  
            xmlns:sws="http://www.springframework.org/schema/web-services"  
            xsi:schemaLocation="http://www.springframework.org/schema/beans  
                                     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
                                     http://www.springframework.org/schema/web-services  
                                     http://www.springframework.org/schema/web-services/web-services-2.0.xsd  
                                     http://www.springframework.org/schema/context  
                                     http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
       <context:component-scan base-package="com.blog.samples.services" />  
       <sws:annotation-driven />  
       <!--  
            Our test service bean  
       -->  
       <bean id="AccountDetailsService" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition" lazy-init="true">  
      <property name="schemaCollection">  
        <bean class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">  
          <property name="inline" value="true" />  
          <property name="xsds">  
            <list>  
              <value>schemas/AccountDetailsServiceOperations.xsd</value>  
            </list>  
          </property>  
        </bean>  
      </property>  
      <property name="portTypeName" value="AccountDetailsService"/>  
      <property name="serviceName" value="AccountDetailsServices" />  
      <property name="locationUri" value="/endpoints"/>  
  </bean>  
</beans>  



и там есть ссылка на XSD схему.
Куда положить в проекте этот файл и чем заменить AccountDetailsServiceOperations.xsd?
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38956976
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12mad_nazgul,
авторчто в нутре неонка
Что такое неонк? стабильный нуклид химического элемента?


Классику надо знать ;-)


May12и там есть ссылка на XSD схему.
Куда положить в проекте этот файл и чем заменить AccountDetailsServiceOperations.xsd?

Ничего не надо.
Просто в pom.xml разместить следующий код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>mmk</id>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                        <configuration>
                            <clearOutputDir>true</clearOutputDir>
                            <schemaDirectory>${basedir}/main/resources/xsd</schemaDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>



xsd должны лежать в "/main/resources/xsd"
При build создаются классы, которые можно использовать как обычные классы :-)
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38957041
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul, спасибо.
авторxsd должны лежать в "/main/resources/xsd"
У меня нет xsd, кроме тех что "зашиты" в wsdl.
авторПри build создаются классы, которые можно использовать как обычные классы :-)
Да. И для этого я использую cxf-codegen-plugin в pom файле 17619710 , но не jaxb2-maven-plugin. Я так понимаю что их функциональности схожи.

Т.е. мне просто закомментировать бин "AccountDetailsService" в 17628909 ?
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38958173
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем запустился сервис. Выяснилось что в spring-ws без xsd не обойтись. Если вы располагаете wsdl то вам придется их из него вытащить и скормить спрингу. Потом спринг сам сформирует на основе xsd свой wsdl. Это не во всех ситуациях удобно. Кстати, как просто прикрутить к spring ws логгирование?
...
Рейтинг: 0 / 0
Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
    #38958229
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ линк на GIT , где лежит собирающийся и работающий проект на spring-ws
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Standalone Contract first SOAP веб сервис на Spring WS со контейнером сервлетов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]