小编Wiz*_*che的帖子

切换选项卡onNewIntent导致IllegalStateException

如果我尝试在onNewIntent方法中切换导航选项卡,我的FragmentActivity(singleTop)会给我IllegalStateException.

更具体地说,我的应用程序使用带有三个选项卡的SherlockActionBar,一个选项卡在收到推送通知时更新(并且调用intent),如果应用程序在另一个选项卡上暂停,当我收到意图时(在onNewIntent中)我更改使用bar.setSelectedNavigationItem()将选项卡(以及片段)添加到第三个选项卡,这导致了我的问题.如果应用程序在第三个选项卡上暂停,则不会发生异常.

码:

@Override
    public void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            bar.setSelectedNavigationItem(Utils.ORDER_STATUS_TAB_ID);
        } else {
        }
    } 
Run Code Online (Sandbox Code Playgroud)

推送通知意图:

    Intent notificationIntent = new Intent(context,
            MainActivity.class);
    notificationIntent.putExtra("orderUpdate",
            new Gson().toJson(orderUpdate));
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
            | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
            notificationIntent, 0);

    notification.contentIntent = contentIntent;
Run Code Online (Sandbox Code Playgroud)

TabListener方法(在堆栈跟踪中的第56行注释)

@Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        ft = activity.getSupportFragmentManager().beginTransaction();
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        if (mFragment == null) {
            mFragment = Fragment
                    .instantiate(activity, mClass.getName(), mArgs);
            ft.add(android.R.id.content, mFragment, tag);
            ft.commit();
        } else {
            ft.attach(mFragment); …
Run Code Online (Sandbox Code Playgroud)

java android fragment actionbarsherlock

7
推荐指数
1
解决办法
2575
查看次数

Lucene/Hibernate搜索锁定异常

我使用Hibernate Search在Web应用程序上索引和全文搜索项目,没有问题!

从我的pom.xml:

<hibernate.search.version>3.4.2.Final</hibernate.search.version>
<apache.lucene.version>3.6.2</apache.lucene.version>
<apache.solr.version>3.6.2</apache.solr.version>
<hibernate.version>3.6.9.Final</hibernate.version>
Run Code Online (Sandbox Code Playgroud)

现在,在开始制作之前,我试图使用Apache JMeter对我的Web应用程序的搜索功能进行压力测试.当使用多个线程进行测试时,我会收到大量以下异常:

17:11:57,670 ERROR LogErrorHandler:82 - Exception occurred org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: SimpleFSLock@/opt/myapp/item_index/myapp.item.domain.Item/write.lock
Primary Failure:
    Entity myapp.item.domain.Item  Id 4  Work Type  org.hibernate.search.backend.DeleteLuceneWork
org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: SimpleFSLock@/opt/myapp/item_index/myapp.item.domain.Item/write.lock
    at org.apache.lucene.store.Lock.obtain(Lock.java:84)
    at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:1098)
    at org.hibernate.search.backend.Workspace.createNewIndexWriter(Workspace.java:202)
    at org.hibernate.search.backend.Workspace.getIndexWriter(Workspace.java:180)
    at org.hibernate.search.backend.impl.lucene.PerDPQueueProcessor.run(PerDPQueueProcessor.java:103)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
17:11:57,670 ERROR PerDPQueueProcessor:118 - Unexpected error in Lucene Backend: 
org.hibernate.search.SearchException: Unable to remove class myapp.item.domain.Item#4 from index.
    at org.hibernate.search.backend.impl.lucene.works.DeleteExtWorkDelegate.performWork(DeleteExtWorkDelegate.java:77)
    at org.hibernate.search.backend.impl.lucene.PerDPQueueProcessor.run(PerDPQueueProcessor.java:106)
    at …
Run Code Online (Sandbox Code Playgroud)

java lucene solr hibernate-search

5
推荐指数
1
解决办法
4300
查看次数

Wicket链接重放攻击

我有一个由不同片段组成的ListView,它包含文本和链接(在另一个片段内).链接是可见的,具体取决于列表视图模型的状态.

为简单起见,假设链接是可见的,具体取决于listview模型的布尔字段,如果它是真的可见,否则是不可见的.

首先链接是可见的,我复制链接位置(加密),我等待我的模型更改(即布尔值为false),刷新页面后链接消失.(正确!)

如果我尝试在浏览器中提供URL(之前复制过),我会收到一个WicketRuntimeException,告诉我找不到此链接的监听器.

为了更完整,链接在片段内:

<wicket:fragment wicket:id="reservationRatingFragment">
    <li>
        <div>
            <img src="/img/good.png" />
        </div>
        <p>
            <a wicket:id="ratingGoodLink" href="#"> <wicket:message
                    key="messaging.reservation.rating.good" />
            </a>
        </p>
    </li>
</wicket:fragment>
Run Code Online (Sandbox Code Playgroud)

当我说隐形时,我的意思是我将片段的标记容器设置为.setVisible(false);

为什么会这样?我想如果我回想起一个不再可见的链接,框架应该跳过它并刷新我当前所在的页面(或者将我重定向到基页).

例如,如果我复制链接并更改BasePage(例如转到主页),当我回忆起复制的URL时,异常仍然会发生.

编辑:

在第一个片段中:

WebMarkupContainer msgRatingContainer = new WebMarkupContainer("messageRatingContainer") {
            private static final long serialVersionUID = 1L;

            @Override
            public void onConfigure() {
                setVisible(message.getType() == MessageType.RATING);
            }
        };

if (msgRatingContainer.isVisible()) {
            if (message.getType() == MessageType.RATING) {
                msgRatingContainer.add(new ReservationRatingFragment("messageRatingSection",
                        "reservationRatingFragment", this, item, message));
}
Run Code Online (Sandbox Code Playgroud)

嵌套片段(ReservationRatingFragment):

public ReservationRatingFragment(String id, String markupId,MarkupContainer markupContainer, Item item, Message msg) {
        super(id, …
Run Code Online (Sandbox Code Playgroud)

java wicket exception hyperlink replay

2
推荐指数
1
解决办法
377
查看次数