Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Веб сервис на Java 
:(
    Опции темы
kkorsakoff
Дата 21.4.2008, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 6
Всего: 14



Цитата(Stampede @ 19.5.2005,  20:41)
У меня по поводу веб сервисов есть один БОЛЬШОЙ-ПРЕБОЛЬШОЙ вопрос.

Дело в том, что сама идея SOAP и вызова методов как сервисов по HTTP в текстовом формате очень даже понятна, и даже можно запросто сваять демку "хелло ворлд", и вроде бы все пучком. До тех пор, пока не возникнет задача обмениваться данными, чуть более сложными чем строки и примитивы. Вот тут-то и начинается гемор.

Например, если у вас есть какой-то класс, который надо пересылать в качестве параметра/результата (скажем, простой Bean), Axis создаст для него прокси, который можно будет использовать на клиенте. Но это-то будет уже не оригинальный класс! Скажете, ничего страшного? Хорошо, тогда вот реальный пример из жизни.

У нас есть древнее серверное приложение на Java, написанное еще на сокетах. Я его сейчас переделываю в J2EE. Клиент к нему - толстый, на Swing'е. Для обмена данными используется паттерн Value Objects, а для доступа к серверной функциональности - Session Facade.

Так вот, объекты Value Objects у меня не простые бины, а целая иерархия классов, идущая от интерфейсов и пр. - со всякими удобными методами, со своей логикой наследования и пр. Так, чтобы их было удобно обрабатывать на сервере, и отображать и манипулировать на клиенте. "And he saw that they were good" smile

Но тут возникло требование обеспечить доступ к серверу через веб сервисы, чтобы:


  • иметь возможность использовать толстого клиента из любого места;

  • иметь интероперабельный API


И я просто сел на попу, потому что преобразование моих Value Objects в прокси сразу же ломало весь мой клиентский код. Я несколько дней рыл инет, пытаясь найти решение. В прниципе вопрос, насколько я понял, решается написанием собственных сериализаторов-десериализаторов. Но почему-то мне это решение мне не понравилось, уж не помню почему. По-моему, я очень не полюбил идею автогенерации всей этой SOAP чухни и страшный вид WDSL файла.

И вот когда я в отчаянии стал рыть все подряд, я наткнулся на обсуждении разницы в подходах Java и .Net к вопросу создания веб сервисов. И оттуда я узнал, что есть две принципально разных парадигмы SOAP: document-style и RPC-style. По каким-то историческим причинам в Java получил развитие только второй, тогда как .Net последовали рекомендации консорциума по интероперабельности WS-I и выбрали document-style.

И хоть я не люблю MS, но когда я узнал об этом, я готов был расцеловать Билла Гейца. После этой маленькой подсказки я просто тупо сел и за день приделал веб-сервисный интерфейс к моему серверу приложения.

В Axis я объявил один единственный метод, который принимает строку и возвращает строку. Кроме того, я написал тоненький wrapper, который маршализует параметры и возвращаемые результаты. Для XML сериализации воспользовался простой до ужаса библиотечкой XStream.

Потом я сделал фабрику, которая скрывает детали получения серверных Session Beans, и теперь при запуске клиента достаточно указать тип соединения, RMI или SOAP, и теперь клиенту это вообще по барабану - он просто общается с бинами (вернее с их стабами), не задумываясь, откуда они берутся.

Может, конечно, я просто изобрел велосипед, но лично мне на нем ездить в четыреста пятьдесят раз удобнее smile

И все-таки меня мучает вопрос: а может, есть более простой путь?

Да простят меня за оверквотинг, скопировал целиком сообщение Stampede т.к. оно было давно и полностью отражает мои мысли в последнее время smile 

Столкнулся с такой же проблемой: да все круто, написал аннотацию WebService (кстати неужели сложно было сделать чтобы имя параметров автоматически передавались в генерируемые файлы без добавок типа @WebParam(name = "id")long id), запустил пару команд, бац и готов клиент.

Но было очень обидно увидеть вместо своих родных VO, обтесанных напильником, увидеть страшные сгенерированные подобия smile 
Нафиг тогда оно нужно?

Вопрос: не нашлось ли какого решения за это время?


Предложу свой ход мыслей. Вроде выкрутился, но не известно какие тут еще подводные камни.

Сначала попытался копировать проперти при помощи BeanUtils из apache commons beans, оно позволяет скопировать одноименные проперти из одного объекта в другой - с простыми VO можно и так работать, получится что-то вроде
Код

Port .... // коннектимся к веб-сервису как обычно
Customer gen=port.findById(980l); // сгенерированный VO

Customer our = new Customer(); // создаем пустой "наш" VO
BeanUtils.copyProperties(our,gen); // магия!:)



Но если VO содержит не только простые типы, такой фокус не прокатит. BeanUtils ругнется что-то про несоответствие классов.

Понятно, что прийдется самому сериализовать объект на стороне веб службы и доставать из строки, как это уже сделал Stampede. Разница лишь в том, что я воспользовался не библиотекой, а стандартными средствами, а именно - JAXB.

Тогда сериализация будет выглядеть как
Код

            JAXBContext ctx = JAXBContext.newInstance(Customer.class);
            Marshaller m = ctx.createMarshaller();
            wr = new StringWriter();
            m.marshal(c, wr);
            return wr.toString();


А десериализация
Код

            Port .... // коннектимся к веб-сервису как обычно
            String s=port.findByIdXML (980l);
            JAXBContext ctx= JAXBContext.newInstance(Customer.class);
            Unmarshaller m=ctx.createUnmarshaller();
            Customer c= (Customer) m.unmarshal(new StringReader(s));


Ничего принципиально нового по сути я конечно не предложил, но мало ли кому интересно, да и апнуть тему smile

Добавлено через 1 минуту и 47 секунд
P.S. Сам VO надо аннотировать @XmlRootElement. Все параметры, связи и прочее аннотировать не обязательно, он их сам подхватит.
PM MAIL WWW ICQ   Вверх
kkorsakoff
Дата 22.4.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 6
Всего: 14



Ура, проблема кажется решена. Выбросить стандартный генератор клиентского кода smile 

Не уверен, может что-то лишнее сделано, но точно знаю, что именно так работает smile 

Имеем веб-сервис с методом 
Код

    @WebMethod()
    public Customer findById(long id) throws DatabaseException {
        Customer c = ...;
        return c;
    }


Customer - обычный VO.

Далее создаем клиентский код как обычно при помощи wsimport.
Можно конечно создать все необходимые классы вручную, но так удобнее.
Из всего сгенерированного хлама нам нужно:

Собственно клиент (аннотированный @WebServiceClient).
Он будет иметь метод
Код

    /**
     * 
     * @return
     *     returns CustomerWS
     */
    @WebEndpoint(name = "CustomerWSPort")
    public CustomerWS getCustomerWSPort() {
        return super.getPort(new QName("http://ws.webapp.core.billing.baltline.ru/", "CustomerWSPort"), CustomerWS.class);
    }


Смотрим в CustomerWS - он нам тоже нужен. На основе его во время рантайм генерируется прокси.
Видим, что он имеет метод
Код

    @WebMethod
    @WebResult(targetNamespace = "")
    @RequestWrapper(localName = "findById", targetNamespace = "http://ws.webapp.core.billing.baltline.ru/", className = "ru.baltline.billing.core.client.FindById")
    @ResponseWrapper(localName = "findByIdResponse", targetNamespace = "http://ws.webapp.core.billing.baltline.ru/", className = "ru.baltline.billing.core.client.FindByIdResponse")
    public Customer findById(
        @WebParam(name = "id", targetNamespace = "")
        long id)
        throws DatabaseException_Exception
    ;


Ага, видим, что className указывают на парочку сгенерированных классов. Как вы уже догадались, это и есть то, во что сериализатор/десериализатор превращает запросы и ответы. Это обычные классы, аннотированные @XmlType.
Запрос оставляем как есть, у нас там VO не используются, так что вполне сойдет сгенерированный.
Открываем ответ, т.е. FindByIdResponse.
Код

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "findByIdResponse", propOrder = {
    "_return"
})
public class FindByIdResponse {

    @XmlElement(name = "return")
    protected Customer _return;



}

Т.е. ответ это простой класс, содержащий в себе <return></return>, в котором и лежит интересующий нас VO
wsimport хочет мапить его на сгенерированный им Customer, но мы меняем на наш

Код

    @XmlElement(name = "return")
    protected !!!!! указываем наш VO !!!!!Customer _return;


Удаляем ненужные нам VO (главное не удалить по запаре снегерированные Request и Response объекты), удаляем ObjectFactory (не очень понял пока зачем она нужна) и клиент готов к работе smile 

Код

    CustomerWS port = new CustomerWSService().getCustomerWSPort();
        //invoke business method
      try {
          Customer c=port.findById (980l);
          System.out.println(c); // ура, наш toString работает:)
      } catch (DatabaseException_Exception e) {
          e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
      }


Кстати Exception я не стал мапить, а надо бы. Пока что на клиенте получаю сгенерированный класс

Это сообщение отредактировал(а) kkorsakoff - 22.4.2008, 19:59
PM MAIL WWW ICQ   Вверх
Restavrator
Дата 14.5.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.6.2007

Репутация: 1
Всего: 1




Что-то я читаю ветку перечтываю и все никак не могу понять как мне решить следующую проблему:

Есть приложение которое взаимодействует с внешней системой. Взаимодействие сейчас происходит либо через EJB либо через веб сервисы.
В будущем возможно появится что-то еще.
Похожую ситуацию когда то описывал maximb:
"Теперь клиент: (моя реализация)
Клиент конектится по local EJB, если не получается то коннектится по remote EJB,
если не получается конектится к WEB - сервису.
Все интерфейсы EJB и WEB - сервис реализуют один интерфейс."

При взаимодействии через EJB используются JabaBean объекты внешней системы. 
При взаимодействии черех веб-сервисы Axis генерирует собственные бины, но так как эти бины уже существуют их приходится переносить в другой пакет. Из-за чего соответсвенно очень сильно разрастается объем кода. Да и не самое приятное занятие работать с параллельными бинами в разных местах. 

Вообщем вопрос, можно ли его заставить использовать бины внешней системы, при условии что они всегда будут нам доступны? 
Или может есть какой нибудь вариант для оптимизации этого процесса?

Внешнюю систему изменять нет возможности, т.о. вариант с сериализацией в строку и обратно не поможет.
PM MAIL   Вверх
kkorsakoff
Дата 3.6.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 6
Всего: 14



Через Axis неизвестно, но при генерировании клиентских классов при помощи wsimport можно.
PM MAIL WWW ICQ   Вверх
christy
Дата 17.7.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 16.7.2008

Репутация: нет
Всего: нет



Не знаю, актуально это еще или нет, но хочу предложить еще одно решение проблемы, описанной kkorsakoff.

Допустим надо, чтобы вс вернул тип List (здесб может быть любой ваш тип). Создаем вс:

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.WebParam;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Holder;

@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
public class TestDiffFormats {

@WebMethod
    public void getList(@WebParam(name="result", mode=WebParam.Mode.INOUT)Holder<java.util.List<String>> result){
         result.value.add("SS");
     }
}

генерим стандартные заглушки как обычно с помощью wsimport. Пишем клиента:

public class FormatsTester {
    public String getRes() {
        String res = "";
        TestDiffFormatsService testDiffFormatsService = new TestDiffFormatsService();
        TestDiffFormats port = testDiffFormatsService.getTestDiffFormatsPort();
        javax.xml.ws.Holder<java.util.List<String>> h = new  javax.xml.ws.Holder<java.util.List<String>>(new ArrayList<String>());
        port.getList(h);
        System.out.println(" = " +  h.value.size());
     //   return res;
    }
}

PM MAIL   Вверх
chief39
Дата 22.7.2008, 15:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 11
Всего: 77



Цитата(Се ля ви @  16.9.2005,  11:05 Найти цитируемый пост)
Старые решения на допотопных и малораспространённых сейчас языках типа COBOL`а, Фортрана, можно обернуть в веб-сервис и тем самым удобно вплести в современную систему, работая с ним из любого языка.

Мы, на основе стандартов получили великолепный универсальный механизм для построения систем из всего, что имеется под рукой - старых решений, программистов на любых языках и т.д. В идеале ты можешь вообще оставить на откуп каждому конкретному человеку - на каком языке ему удобнее программировать, лишь бы он веб-сервисы писал - и включить его в команду разработки на равне с другой разношорстной публикой, только оговорив интерфейсы веб-сервисов, с помощью которых они будут взаимодействовать. Неудивительно что теперь постепенно всё более остро встаёт вопрос уже не о том, какой язык программирования лучше, а о том, какой из них удобнее для написания веб-сервисов.

Я убеждён, что у SOA огромный экономический потенциал и большое будущее.

Помню книжечку 1994 года(кажется) в которой подробно описывалось как, почему и когда корба заполонит мир. Уже сейчас мы должны были юзать только объектные браузеры, всё было бы обёрнуто корбой и мы наслаждались бы кобольными движками 80-х, хитро сныканными под толстым слоем корбы.
Прям один в один:
Цитата

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


И что? smile
И ничё. Вживую работал только с одной системой, представляющей из себя сипипи реализацию и корба-связки.
Саоме интересное - корба связывала только сипипи с сипипи.
Светлой мысли прикрутить туда фортран или кобол не возникло.
Наверное потому что очень мало универсального кода. Его практически нету.
Давеча переписали старую мейнфреймовскую систему на жаве. Даже в мыслях "а вот интегрировать бы...".
Самые простые, универсальные и вечные штуки - это косинус/синус/калькулятор/календарь.
Но их переписывают в первую очередь smile)
Все остальные проще написать заново, чем трахаться, интегрируя.

Надеюсь все давно поняли что "вам не надо знать на чём и как написано, вам только вот так надо сделать - и сразу всё закрутится" - звиздёж и провокация? smile
Что когда интегрируешь две большие "чего-то там", надо не одну неделю провести "заглядывая к соседям".

А если представить себе систему кобол+дотнет+джава+пхп.... специалистов, необходимых для этого... ужас эйчара и ПМа...
провалы в понимании между разными людьми которые в разных мирах живут... smile))
Лучше уж пяток взаимозаменяемых джавистов, минус несколько тезхнологий, минус интеграцию, минус провалы типа "кобольщик закончился..."

Подразумеваю что все давно убедились что слабосвзяанных систем действительно мало. Очень мало. 


ЗЫ: Коту спасибо за пример, полистал.

Это сообщение отредактировал(а) chief39 - 22.7.2008, 16:07


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Akvel
  Дата 12.9.2008, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



Разбираюсь тут с вс, использую Eclipce+axis2. И возникла такая проблема, что простые типы приходят к клиенту нормально, а когда начинаю передавать свой класс то он не доходит до клиента.
Может кто подскажет. 

Передаваемый класс
Код

public class MyOwnClass {
    
    
    public int Pole1;
    public String Pole2;
    
    
    public MyOwnClass(){
        Pole1 = 12345;
        Pole2 = "12345";
    }

}


Класс веб-сервиса
Код

public class MyWSOwn {
    public MyOwnClass Polushit(){
        return new MyOwnClass();
    }
}


Класс клиента
Код

import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import wtp.MyWSOwnStub.MyOwnClass;

public class StartMyOwn {
    public static void main (String[] args){
            MyWSOwnStub stub = new MyWSOwnStub();
            MyOwnClass result = stub.Polushit().get_return();
            System.out.println(result.getPole1() + " " + result.getPole2());
    }
}


MyWSOwnStub.MyOwnClass и MyWSOwnStub автосгенеренные Eclipceой классы
PM ICQ   Вверх
Akvel
Дата 16.9.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



Кто пробовал подключаться к веб сервисам из апплетов? 
Выдает ошибку connection refuse
PM ICQ   Вверх
batigoal
Дата 16.9.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



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


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Akvel
Дата 18.9.2008, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



Цитата(batigoal @ 16.9.2008,  12:24)
возможно, дело в том, что апплет не подписан - в этом случае он не имеет прав на коннект куда-нибудь, кроме как к тому хосту, откуда он был загружен.

Ага, спасибо помогло. Подписанным апплетом варварски снес SecurityManager и все заработало  smile 

Это сообщение отредактировал(а) Akvel - 18.9.2008, 06:42
PM ICQ   Вверх
mullih
Дата 18.9.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 19.12.2006

Репутация: нет
Всего: 2



Цитата(simanyay @ 19.5.2005,  16:42)
Веб сервис, с помощью Burlap, на Java меньше чем за минуту:

Необходимо:
1. Любой application server (Tomcat, Resin, etc.)
2. Библиотека Burlap

Делаем:
// Сторона сервера

1. Создаём интерфейс:
Код

package service;

public interface Basic {
    public String sayHello();
}


2. Создаём сервис:
Код

package service;

import com.caucho.burlap.server.BurlapServlet;

public class Hello extends BurlapServlet implements Basic {
    public String sayHello() {
        return "Hello";
    }
}


3. Деплоим сервис (в моём случае находится тут: http://localhost:8084/hello/Hello)

Доброго времени суток 
С вебом никогда отношения не имел. Может кто по подробнее объяснит 3-ий пункт  -- Деплоим сервис (используя Tomcat, если sever к этому пункту относится). Что это такое и как делается.
Заранее спасибо

Это сообщение отредактировал(а) mullih - 18.9.2008, 12:58
PM MAIL WWW Skype   Вверх
Akvel
  Дата 27.9.2008, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



Кто делал веб-сервиси с помощью Axis2? 
Все генерю утилитами для Eclipse   - Axis2 Codegen Wizard Plug-in и Axis2 Service Maker
Проблемы с пересылкой своих Exception при ошибках в методах
Клиенту приходит не мой Exception, а следующее

Код


org.apache.axis2.AxisFault: Мое сообщение
    at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:512)
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:370)
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
    at mypac.MyServiceStub.getExcept(MyServiceStub.java:201)
    at mypac.StartCli.main(StartCli.java:22)



уже дней 5 копаю  smile 

PM ICQ   Вверх
Nikola661
Дата 15.10.2008, 11:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 14.5.2007

Репутация: 1
Всего: 1



Вычитал, что можно использовать JAXB2.0. Но не могу понять как его установить и юзать.
PM MAIL   Вверх
SerialKiller9
Дата 9.12.2008, 12:25 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.2.2008

Репутация: нет
Всего: нет



Здравствуйте!
Мне вэб-сервисы уже весь мозг расплавили, помогите проблему решить.
Сделал вэб-сервис на яве через связку Eclipse + JAX WS 2.1.5, там в принципе тривиально все создаешь только класс вэб-службы с аннотациями, опубликовал и все- вэб-служба работает. Сделал маленькое приложение в Visual Studio на С# абсолютно без проблем подключился к вэб-службе которую написал указав только URL где wsdl-ка лежит, потестил методы все классно. Начал делать клиентское приложение на яве и не получается... собственно в этом и проблема, привидите пожалста кусок кода в котором подключаетесь к вэб-службе только без всяких серверов приложений, а используя именно связку Eclipse с Jax WS )) надеюсь ктонить понял мой сумбурный пост , вообещм жду помощи  smile 
PM MAIL   Вверх
Maverick
  Дата 9.2.2009, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Господа, прошу знающего человека раписать каким образом можно рабоать со сложным пользовательским параметром в вебметоде вебсервиса... 
Использую JAXWS...

Проблема в следующем...  Имю вот тако метод на сервере...
Код

    @WebMethod(operationName = "enroll")
    public int enroll(
            @WebParam(name = "loginURI")            
            String loginURI, 
            @WebParam(name = "secretKey")            
            String secretKey, 
            @WebParam(name = "fields")            
            CertFields fields, 
            @WebParam(name = "username")            
            String username, 
            @WebParam(name = "CSR")            
            String CSR,
            @WebParam(name = "accessCode")            
            String accessCode) {
        return 0;
    }


Сложность представляет собой параметр fields... Это обычный pojo класс, где все поля - банальные стринги...

При попытке восопльзоваться им на клиенте имею следующее
Код

    public void enroll(){
        try {
            String loginURI = "";
            CertFields fields = new CertFields();
[font=verdana]            fields.setCountryName(new JAXBElement(new QName("com.comodo.webservice"), String.class, "value"));[/font]
            String username = "";
            String csr = "";
            String accessCode = "";
            Integer result = port.enroll(loginURI, secretKey, fields, username, csr, accessCode);
            System.out.println("enroll().result = "+result);
        } catch (Exception ex) {
            System.out.println("enroll().error" + ex.getMessage());
        }
    }


То есть заглушка вместо нормальных строных стрингов мутит какие то жаксб элементы... как от этого избавится толково??
Дело в аннотациях данного класса? Или вебсервиса??


--------------------
smile
PM ICQ GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1948 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.