Как получить описание детали для catalogentryID

Я использую магазин IBM WCS 7 aurorab2b.

Я хочу получить описание partNumber, введенное пользователем. Я получаю catentryID = 14726 и langId как -1. Я пробовал следующим образом, и я получаю javax.ejb.DuplicateKeyException при создании экземпляра CatalogEntryDescriptionAccessBean

try{

    String catentID = catlogBean.getCatalogEntryReferenceNumber();
    long catentryID = Long.parseLong(catentID);
    Integer langID = Integer.parseInt(getLanguageId());
    System.out.println("catEntryID:"+catentryID);
    System.out.println("langID:"+langID+"");
    CatalogEntryDescriptionAccessBean catlogDescriptionBean = new CatalogEntryDescriptionAccessBean(catentryID,langID);

    if(catlogDescriptionBean == null)
        System.out.println("catlogDescriptionBean is null");
    else
        System.out.println("catlogDescriptionBean is not null");

    description = catlogDescriptionBean.getShortDescription();
}
catch(Exception e){
    System.out.println("EXCEPTION IN DESCRPTN");
    e.printStackTrace();
}

person Narendra Jaggi    schedule 05.06.2015    source источник


Ответы (1)


Обратите внимание, что вызов конструктора компонента доступа будет сопоставлен с соответствующим методом ejbCreate в домашнем интерфейсе EJB. что означает, что вы создаете новую запись, которая уже существует.

используйте следующий способ получить описание с помощью компонентов доступа:

CatalogEntryAccessBean catEntryAB = new CatalogEntryAccessBean();
catEntryAB.setInitKey_catalogEntryReferenceNumber(catentry_id);

catEntryAB.refreshCopyHelper();

CatalogEntryDescriptionAccessBean catEntryDescAB = catEntryAB.getDescription(langId);

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

Обновление: 2-й способ добиться того же:

String longDesc = CatalogEntryCache.getDescription(catEntryAB , 
                        this.commandContext.getLanguageId(), getStoreId()).getLongDescription()

Обратите внимание, что в JSP WCS использует Solr для получения информации о производстве. Прочтите ProductDisplay.jsp, чтобы увидеть используемые службы wcf и соответствующие профили доступа/поиска.

Надеюсь это ответит на твой вопрос.

Спасибо

Кровать

person Abed Yaseen    schedule 06.06.2015
comment
Спасибо за ответ! Я получаю экземпляр CatalogEntryAccessBean путем итерации перечисления, возвращаемого findByPartNumbersAndStore(java.lang.String[] partNumbers, java.lang.Integer storeId) , поэтому после получения экземпляра CatalogEntryAccessBean я могу получить catentryID с помощью getCatalogEntryReferenceNumber. так что теперь мне снова нужно сделать catEntryAB.setInitKey_catalogEntryReferenceNumber(catentry_id); ??? catentId уже присутствует, требуется ли его повторная передача, прежде чем - person Narendra Jaggi; 06.06.2015
comment
Нет, если у вас есть компонент доступа, готовый из предыдущих операций, вы можете использовать его, снова вызвав setInitKey_catalogEntryReferenceNumber(catentry_id). - person Abed Yaseen; 06.06.2015
comment
CatalogEntryAccessBean catalogAccessBean = new CatalogEntryAccessBean(); Перечисление перечисление = catalogAccessBean.findByPartNumbersAndStore (partNumberArray, getStoreId()); while(enumeration.hasMoreElements()){ CatalogEntryAccessBean catlogBean = (CatalogEntryAccessBean)enumeration.nextElement(); CatalogEntryDescriptionAccessBean catlogDescriptionBean = catlogBean.getDescription(); - person Narendra Jaggi; 06.06.2015
comment
Для catlogBean.getDescription(); m получаю повторяющееся исключение - person Narendra Jaggi; 06.06.2015
comment
используйте getDescription (langId); . мне нужно посмотреть на трассировку стека исключений - person Abed Yaseen; 06.06.2015
comment
getDescription принимает Integer langId и выдает: NamingException FinderException CreateException RemoteException , проверьте свой код и исправьте исключение формата числа. я делал это много раз, и это работает для меня - person Abed Yaseen; 06.06.2015
comment
Рад подаст предупреждающий знак для этих 4 исключений для ejb, которые я обработал, исключение отличается от всех этих, которые я поставил вопрос - person Narendra Jaggi; 06.06.2015
comment
только что обновил мой ответ выше, попробуйте 2-й способ сделать это String longDesc = CatalogEntryCache.getDescription(catEntryAB, this.commandContext.getLanguageId(), getStoreId()).getLongDescription(). обратите внимание, что оба работают со мной. если это не сработало для вас. тогда у вас есть что-то еще в вашем приложении - person Abed Yaseen; 06.06.2015
comment
Спасибо @Abed, наконец, оба способа работают, второй способ лучше, так как он уменьшает количество ошибок. заявлений, - person Narendra Jaggi; 08.06.2015