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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Веб-сервис на основе бина. Не запускается Tester. 
:(
    Опции темы
NatalieGal
Дата 20.1.2011, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Создаю Enterprise Application, в котором есть ejb. В ejb создаю SessionEjbBean, а затем веб-сервис на его основе. После создания доступна wsdl схема, а tester не запускается. Логи glassfish приведены ниже. Не могу понять в чем проблема и как ее исправить. Подскажите, если кто-то с таким сталкивался или если есть идеи. Заранее благодарна.
Код

INFO: file:/C:/Program Files/glassfish-3.0.1/glassfish/domains/domain1/applications/ELib/_ELib-ejbPU logout successful
SEVERE: WS00034: Two web services are being deployed with the same endpoint URL ELibWSService/ELibWS; The service that gets loaded last will always be the one that is active for this URL
INFO: WSTX-COMMON-2007: Map CMT EJB web method 'elib.ELibWS'.'authorization' with effective transaction attribute of 'REQUIRED' to wsdl bounded operation '{http://elib/}ELibWSPort':'authorization'  with WS-AT policy assertion(s) 'ELibWSPortBinding_authorization_WSAT_Policy'
INFO: WSTX-COMMON-2007: Map CMT EJB web method 'elib.ELibWS'.'registration' with effective transaction attribute of 'REQUIRED' to wsdl bounded operation '{http://elib/}ELibWSPort':'registration'  with WS-AT policy assertion(s) 'ELibWSPortBinding_registration_WSAT_Policy'
INFO: Metro monitoring rootname successfully set to: amx:pp=/mon/server-mon[server],type=WSEndpoint,name=ELibWSService-ELibWSPort
WARNING: "GMBAL901: JMX exception on registration of MBean MBeanImpl[type=WSEndpoint,name=ELibWSService-ELibWSPort,oname=amx:pp=/mon/server-mon[server],type=WSEndpoint,name=ELibWSService-ELibWSPort]"
WARNING: Container org.glassfish.webservices.JAXWSContainer@60f8df02 doesn't support class com.sun.xml.ws.api.server.Module
INFO: Portable JNDI names for EJB ELibSession : [java:global/ELib/ELib-ejb/ELibSession!elib.ELibSessionLocal, java:global/ELib/ELib-ejb/ELibSession!elib.ELibSessionRemote]
INFO: Glassfish-specific (Non-portable) JNDI names for EJB ELibSession : [elib.ELibSessionRemote#elib.ELibSessionRemote, elib.ELibSessionRemote]
INFO: TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))
INFO: Server: unknown
INFO: file:/C:/Документы/СПбГПУ/5%20курс/СПО/Практика/3%20lab/ELib/dist/gfdeploy/ELib/ELib-ejb_jar/-ELib-ejbPU login successful
WARNING: Got SQLException executing statement "CREATE TABLE WORKSESSION (ID INTEGER NOT NULL, LOGIN VARCHAR(255), PRIMARY KEY (ID))": java.sql.SQLException: Table/View 'WORKSESSION' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "CREATE TABLE AUTHOR (ID INTEGER NOT NULL, FIRSTNAME VARCHAR(255), LASTNAME VARCHAR(255), PRIMARY KEY (ID))": java.sql.SQLException: Table/View 'AUTHOR' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "CREATE TABLE LIBRARYLOCATION (ID INTEGER NOT NULL, EBOOK_ID INTEGER, PRIMARY KEY (ID))": java.sql.SQLException: Table/View 'LIBRARYLOCATION' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "CREATE TABLE READER (LOGIN VARCHAR(255) NOT NULL, PASSWORD VARCHAR(255), PRIMARY KEY (LOGIN))": java.sql.SQLException: Table/View 'READER' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "CREATE TABLE USERLOCATION (ID INTEGER NOT NULL, EBOOK_ID INTEGER, LOGIN VARCHAR(255), PRIMARY KEY (ID))": java.sql.SQLException: Table/View 'USERLOCATION' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "CREATE TABLE EBOOK (ID INTEGER NOT NULL, CATALOG INTEGER, COUNT INTEGER, TITLE VARCHAR(255), AUTHOR_ID INTEGER, PRIMARY KEY (ID))": java.sql.SQLException: Table/View 'EBOOK' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "ALTER TABLE WORKSESSION ADD CONSTRAINT WORKSESSION_LOGIN FOREIGN KEY (LOGIN) REFERENCES READER (LOGIN)": java.sql.SQLException: Constraint 'WORKSESSION_LOGIN' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "ALTER TABLE LIBRARYLOCATION ADD CONSTRAINT LBRARYLOCATIONBKID FOREIGN KEY (EBOOK_ID) REFERENCES EBOOK (ID)": java.sql.SQLException: Constraint 'LBRARYLOCATIONBKID' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "ALTER TABLE USERLOCATION ADD CONSTRAINT USERLOCATION_LOGIN FOREIGN KEY (LOGIN) REFERENCES READER (LOGIN)": java.sql.SQLException: Constraint 'USERLOCATION_LOGIN' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "ALTER TABLE USERLOCATION ADD CONSTRAINT SERLOCATIONEBOOKID FOREIGN KEY (EBOOK_ID) REFERENCES EBOOK (ID)": java.sql.SQLException: Constraint 'SERLOCATIONEBOOKID' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "ALTER TABLE EBOOK ADD CONSTRAINT FK_EBOOK_AUTHOR_ID FOREIGN KEY (AUTHOR_ID) REFERENCES AUTHOR (ID)": java.sql.SQLException: Constraint 'FK_EBOOK_AUTHOR_ID' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL, PRIMARY KEY (SEQ_NAME))": java.sql.SQLException: Table/View 'SEQUENCE' уже существует в Schema 'APP'.
WARNING: Got SQLException executing statement "INSERT INTO SEQUENCE(SEQ_NAME, SEQ_COUNT) values ('SEQ_GEN', 1)": java.sql.SQLIntegrityConstraintViolationException: Обработка оператора прекращена, поскольку при этом был бы создан дубликат значения ключа в ограничении уникального или главного ключа или в уникальном индексе, указанном при помощи 'SQL110120105835350', заданном в 'SEQUENCE'.
INFO: WS00019: EJB Endpoint deployed
 ELib  listening at address at http://localhost:8080/ELibWSService/ELibWS
INFO: ELib was successfully deployed in 2 940 milliseconds.

PM MAIL   Вверх
Evgin
Дата 20.1.2011, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

SEVERE: WS00034: Two web services are being deployed with the same endpoint URL ELibWSService/ELibWS;

Вот в чем проблема.

Покажите код бинов.
PM MAIL   Вверх
NatalieGal
Дата 20.1.2011, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я тоже обратила на это внимание, но откуда берутся два сервиса ума не дам. 

вот собственно код ELibSession:
Код

@Stateless
public class ELibSession implements ELibSessionRemote, ELibSessionLocal {
    @PersistenceContext(unitName = "ELib-ejbPU")
    private EntityManager em;
    Worksession ws=null;

    
    public void persist(Object object) {
        em.persist(object);
    }

    public boolean registration(String login, String password)throws LibraryException {
        boolean register=false;
        if (!login.equals("")&&!password.equals("")){
            Query query = em.createNamedQuery("Reader.findByLogin");
            query.setParameter("login", login);
            if (query.getResultList().isEmpty()){
                Reader reader=new Reader(login,password);
                em.persist(reader);
                register=true;
            }
            else
                throw new LibraryException("Пользователь с таким логином уже зарегистрирован");
        }
        else
            throw new LibraryException("Поля логина и пароля не могут быть пустыми");
        return register;
    }

    public int authorization(String login, String password) throws LibraryException{
        /*Author author1=new Author(0,"John","Vanduk");
        Ebook book1=new Ebook(0,"Drupal 6",3,1);
        book1.setAuthor(author1);
        List<Location> locs=new LinkedList<Location>();
        for (int i=0; i<book1.getCount(); i++){
            Librarylocation ll=new Librarylocation(i);
            ll.setEbook(book1);
            locs.add(ll);
            em.persist(ll);
            book1.getLibrarylocationCollection().add(ll);
        }
        em.persist(author1);
        em.persist(book1);*/
        int result=-1;
        Query query = em.createNamedQuery("Reader.findByFull");
        query.setParameter("login", login);
        query.setParameter("password", password);
        List<Reader> readers=(List<Reader>)query.getResultList();
        if (!readers.isEmpty()){
            Reader r=readers.get(0);
            ws=new Worksession(r);
            em.persist(ws);
            result=ws.getId();
        }
        else
            throw new LibraryException("Неверная пара логин-пароль");
        return result;
    }

    private List<Ebook> searchByTitle(String title) {
        List<Ebook> result=new LinkedList<Ebook>();
        Query query = em.createNamedQuery("Ebook.findByTitle");
        query.setParameter("title", title);
        result=query.getResultList();
        return result;
    }


    private List<Ebook> searchByAuthor(String firstName, String lastName) {
        List<Ebook> result=new LinkedList<Ebook>();
        Query query = em.createNamedQuery("Ebook.findAll");
        List<Ebook> books=query.getResultList();
        for(Ebook book:books){
            Author author=book.getAuthor();
            if (author.getFirstname().equals(firstName)&&author.getLastname().equals(lastName))
                result.add(book);
        }
        return result;
    }

    public List<Ebook> search(String title, String firstName, String lastName) {
        List<Ebook> result=new LinkedList<Ebook>();
        if (!title.equals("")&&firstName.equals("")&&lastName.equals("")){
            result=searchByTitle(title);
        }
        if (title.equals("")&&!firstName.equals("")&&!lastName.equals("")){
            result=searchByAuthor(firstName, lastName);
        }
        if (!title.equals("")&&!firstName.equals("")&&!lastName.equals("")){
            List<Ebook> books=searchByTitle(title);
            for(Ebook book:books){
                Author author=book.getAuthor();
                if(author.getFirstname().equals(firstName)&&author.getLastname().equals(lastName))
                    result.add(book);
            }
        }
        return result;
    }

    public boolean orderBook(Ebook ebook) throws LibraryException {
        boolean result=false;
        Reader reader=ws.getReader();
        Userlocation  ul=null;
        //проверяем была ли книга заказана пользователем ранее
        Query query=em.createNamedQuery("Userlocation.findAll");
        List<Userlocation> ulocs=(List<Userlocation>)query.getResultList();
        for(Userlocation uloc:ulocs){
            if (uloc.getEbook().equals(ebook)&&uloc.getReader().equals(reader))
                ul=uloc;
        }
        //если проверка выполнена, выполняем заказ
        if (ul==null){
            Query query1=em.createNamedQuery("Librarylocation.findAll");
            List<Librarylocation> liblocs=query1.getResultList();
            for(Librarylocation libloc:liblocs){
                if (libloc.getEbook().equals(ebook)&&!result){
                    em.remove(libloc);
                    Userlocation uloc=new Userlocation(reader, ebook);
                    em.persist(uloc);
                    result=true;
                }
            }
           if(!result)
               throw new LibraryException("В библиотеке нет свободных экземпляров указанной книги");
        }
        else{
            throw new LibraryException("Эта книга уже была заказана Вами");
        }
        return result;
    }

    public boolean returnBook(Ebook ebook) {
        boolean result=false;
        Reader reader=ws.getReader();
        Userlocation ul=null;
        //проверяем была ли книга заказана пользователем
        Query query=em.createNamedQuery("Userlocation.findAll");
        List<Userlocation> ulocs=(List<Userlocation>)query.getResultList();
        for(Userlocation uloc:ulocs){
            if (uloc.getEbook().equals(ebook)&&uloc.getReader().equals(reader))
                ul=uloc;
        }
        //если книга была заказана, осуществляем возврат
        if (ul!=null){
            em.remove(ul);
            Librarylocation ll=new Librarylocation(ebook);
            em.persist(ll);
            result=true;
        }
        return result;
    }

    public List<Ebook> showBooks() {
        Query query=em.createNamedQuery("Ebook.findAll");
        List<Ebook> result=(List<Ebook>)query.getResultList();
        return result;
    }

    public List<Ebook> showReaderBook() {
        List<Ebook> result=new LinkedList<Ebook>();
        Reader r=ws.getReader();

        Query query = em.createNamedQuery("Userlocation.findAll");
        List<Userlocation> ulocs=(List<Userlocation>)query.getResultList();

        for(Userlocation ul:ulocs){
            if (ul.getReader().equals(r)){
                Query q=em.createNamedQuery("Ebook.findById");
                q.setParameter("id", ul.getEbook().getId());
                List<Ebook> books=(List<Ebook>)q.getResultList();
                if (!books.isEmpty())
                    result.add(books.get(0));
            }
        }
        return result;
    }

    public int getWorkSession() {
        int result=-1;
        if (ws!=null){
            result=ws.getId();
        }
        return result;
    }

    public List<Location> getEbookLocations(Ebook ebook) {
        List<Location> result=new LinkedList<Location>();
        /*Collection<Librarylocation> liblocs=ebook.getLibrarylocationCollection();
        Collection<Userlocation> userlocs=ebook.getUserlocationCollection();
        if (liblocs!=null)
            result.addAll(liblocs);
        if (userlocs!=null)
            result.addAll(userlocs);*/
        Query query=em.createNamedQuery("Librarylocation.findAll");
        List<Librarylocation> liblocs=(List<Librarylocation>)query.getResultList();
        for(Librarylocation libloc: liblocs){
            if (libloc.getEbook().equals(ebook)){
                result.add(libloc);
            }
        }
        Query query1=em.createNamedQuery("Userlocation.findAll");
        List<Userlocation> ulocs=(List<Userlocation>)query1.getResultList();
        for(Userlocation uloc: ulocs){
            if (uloc.getEbook().equals(ebook)){
                result.add(uloc);
            }
        }
        return result;
    }

    


    
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
 
}


здесь код интерфейса ELibSessionLocal
Код

@Local
public interface ELibSessionLocal {

    boolean registration(String login, String password)throws LibraryException;

    int authorization(String login, String password)throws LibraryException;

    List<Ebook> search(String title, String firstName, String lastName);

    boolean orderBook(Ebook ebook) throws LibraryException;

    boolean returnBook(Ebook ebook);

    List<Ebook> showBooks();

    List<Ebook> showReaderBook();

    int getWorkSession();

    List<Location> getEbookLocations(Ebook ebook);
    
}


а вот код самого сервиса ELibWS:
Код

@WebService()
@Stateless()
public class ELibWS {
    @EJB
    private ELibSessionLocal ejbRef;// Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Web Service Operation")

    @WebMethod(operationName = "registration")
    public boolean registration(@WebParam(name = "login")
    String login, @WebParam(name = "password")
    String password){
        boolean result=false;
        try {
            result=ejbRef.registration(login, password);
        } catch (LibraryException ex) {
            Logger.getLogger(ELibWS.class.getName()).log(Level.SEVERE, null, ex);
        }
        return result;
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "authorization")
    public int authorization(@WebParam(name = "login")
    String login, @WebParam(name = "password")
    String password){
        int result=0;
        try {
            //TODO write your implementation code here:
            result=ejbRef.authorization(login, password);
        } catch (LibraryException ex) {
            Logger.getLogger(ELibWS.class.getName()).log(Level.SEVERE, null, ex);
        }
        return result;
    }

    /**
     * Web service operation
     */
    /*@WebMethod(operationName = "search")
    public List<Ebook> search(@WebParam(name = "title")
    String title, @WebParam(name = "firstName")
    String firstName, @WebParam(name = "lastName")
    String lastName) {
        //TODO write your implementation code here:
        return ejbRef.search(title, firstName, lastName);
    }*/

    

    

}

PM MAIL   Вверх
necrom
  Дата 21.2.2011, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

WARNING: Got SQLException executing statement "CREATE TABLE WORKSESSION (ID INTEGER NOT NULL, LOGIN VARCHAR(255), PRIMARY KEY (ID))": java.sql.SQLException: Table/View 'WORKSESSION' уже существует в Schema 'APP'.

Знаю, что поздно, сессия ведь закончилась ;), но лучше поздно чем никогда.
Это ошибка грит, что таблица уже существует, в Persistence.xml отключи создание БД сбрось на none.
Не запускаться может из-за того, что в пути есть пробелы к glassfish и тем более русские буквы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0750 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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