2010-05-07 4 views
1

У меня есть сеанс с состоянием.Странная проблема с сессионным bean-файлом SEAM

@Scope(ScopeType.SESSION) 
@Name("chuckNorrisBean") 
public class ChuckNorrisBean implements Serializable, ChuckNorris 

с некоторой функцией

public void roundHouseKick() 
{ 
    ... 
} 

интерфейс

@Local 
public interface ChuckNorris 
{ 
    public void roundHouseKick() 
    { 
     ... 
    } 
} 

и призывая их на странице JSF .xhtml с использованием

#{chuckNorrisBean.roundHouseKick} 

, который работает прекрасно. Однако, если я добавить @Stateful аннотацию к фасоли, так что становится

@Stateful 
@Scope(ScopeType.SESSION) 
@Name("chuckNorrisBean") 
public class ChuckNorrisBean implements Serializable, ChuckNorris 

и страница будет загружаться с исключениями complainig о

Exception during request processing:Caused by javax.servlet.ServletException 
with message: "#{chuckNorrisBean.roundHouseKick}: javax.el.MethodNotFoundException: 
//localhost/universe/earth.xhtml @41,65 action= 
"#{chuckNorrisBean.roundHouseKick}": Method not found: 
ChuckNorrisBean:a6gkg-w6das4-g8wmgh0y-1-g8woy0wo-4b.roundHouseKick()" 

Любые советы о том, что, возможно, уже пошло не так с моим chuckNorrisBean?

Система построена на SEAM/richfaces.

Спасибо!

---- Отредактированный, чтобы добавить больше информации ----

Проект построен с Maven 2.1 упаковываются в ухо (один .ear файл в качестве целевой продукции).

Сервер приложений - JBoss.

После дополнительной отладки и пустячный, поставив

<page view-id="/index.xhtml"> 
    <action execute="#{chuckNorrisBean.roundHouseKick}" /> 
</page> 

в pages.xml, кажется, делать ногами просто отлично. Я все еще не мог понять, почему вызов его на странице не сработал.

+0

@John Просто для любопытства: действительно ли это война проект ??? Имейте это в виду: @Stateful просто работать, когда у вас есть проект EJB или проект EAR. Это ** не работает **, когда у вас есть военный проект –

+0

Я также добавил информацию о среде сборки, надеюсь, это поможет. – John

+0

@Jonh @Statul лучше разработан для работы с ScopeType.CONVERSATION. Его по умолчанию - ScopeType.CONVERSATION. См. Http://stackoverflow.com/questions/2453746/jboss-seam-enabling-debug-page-on-weblogic-10-3-2-11g/2459795#2459795 ** как ваше приложение должно выглядеть как **. Имейте в виду, что некоторые настройки ** могут быть необходимы ** на основе целевого сервера приложений. –

ответ

0

Это довольно странно.

Вы пробовали

#{chuckNorrisBean.roundHouseKick()} 

вместо

#{chuckNorrisBean.roundHouseKick} 

Просто, чтобы увидеть, что происходит

+0

К сожалению, это не помогло :( – John

+0

Я не могу это объяснить. Ваш код должен работать. Что я рекомендую (если вы действительно хотите компонент с состоянием) - создать обычный сеансовый компонент. Просто удалите @Stateful (и интерфейс) и попробуйте это. –

+0

Какой сервер приложений вы используете? –

Смежные вопросы