Java 访问地址时获取服务器错误,但没有堆栈跟踪

Java 访问地址时获取服务器错误,但没有堆栈跟踪,java,hybris,Java,Hybris,我有一个hybris网站,只有一个映射。每次尝试访问特定url时: 有没有办法调试这样的错误 这是页面的控制器: @Controller @RequestMapping(value = "/cart") public class CartPageController extends AbstractPageController { private static final String CART_CMS_PAGE = "cartPage"; private static fin

我有一个hybris网站,只有一个映射。每次尝试访问特定url时:

有没有办法调试这样的错误

这是页面的控制器:

@Controller
@RequestMapping(value = "/cart")
public class CartPageController extends AbstractPageController
{
    private static final String CART_CMS_PAGE = "cartPage";
    private static final Integer DEFAULT_COOKIE_EXPIRY_AGE = 5184000;
    private static final String DEFAULT_CART_IDENTIFIER_COOKIE_NAME = "cart.identifier.cookie.name";
    private static final Logger LOG = Logger.getLogger(CartPageController.class);


    @Resource(name = "cartFacade")
    private CartFacade cartFacade;

    @Resource(name = "userService")
    private UserService userService;

    @Resource(name = "baseStoreService")
    private BaseStoreService baseStoreService;

    @Resource(name = "catalogVersionService")
    private CatalogVersionService catalogVersionService;

    @RequestMapping(method = RequestMethod.GET)
    public String showCart(HttpServletRequest request, HttpServletResponse response, final Model model)
            throws CMSItemNotFoundException
    {

        CartData cartData = cartFacade.getSessionCartWithEntryOrdering(true);

        final String cartCookieIdentifier = getCartCookieIdentifier();

        if (!cartFacade.hasEntries())
        {
            final String cartId = getCookieValue(request, cartCookieIdentifier);

            final Optional<CartData> cartDataOptional = cartFacade.getCartsForCurrentUser().stream()
                    .filter(c -> c.getCode().equals(cartId)).findFirst();

            if (cartDataOptional.isPresent())
            {
                cartData = cartDataOptional.get();
            }
        }

        setCookieValue(response, cartCookieIdentifier, cartData.getCode());
        model.addAttribute("cart", cartData);

        setupPageModel(model);

        String model1 = getViewForPage(model);

        return model1;

    }

    protected void setupPageModel(Model model) throws CMSItemNotFoundException
    {
        storeCmsPageInModel(model, getContentPageForLabelOrId(CART_CMS_PAGE));
        setUpMetaDataForContentPage(model, getContentPageForLabelOrId(CART_CMS_PAGE));
    }

    protected String getCookieValue(final HttpServletRequest request, final String cookieName)
    {
        return Arrays.stream(request.getCookies())
                .filter(c -> c.getName().equals(cookieName))
                .findFirst()
                .map(Cookie::getValue)
                .orElse(null);
    }

    protected void setCookieValue(final HttpServletResponse response, final String cookieName, final String cookieValue)
    {
        final Cookie cookie = new Cookie(cookieName, cookieValue);
        cookie.setMaxAge(DEFAULT_COOKIE_EXPIRY_AGE);

        response.addCookie(cookie);
    }

    protected String getCartCookieIdentifier()
    {
        final String baseStoreId = getCurrentBaseStoreId();
        final String catalogId = getCurrentProductCatalogId();

        if (StringUtils.isNotEmpty(baseStoreId) && StringUtils.isNotEmpty(catalogId))
        {
            return baseStoreId + "-" + catalogId;
        }

        return DEFAULT_CART_IDENTIFIER_COOKIE_NAME;
    }

    protected String getCurrentBaseStoreId()
    {
        final BaseStoreModel baseStore = baseStoreService.getCurrentBaseStore();
        return baseStore == null ? StringUtils.EMPTY : baseStore.getUid();
    }

    protected String getCurrentProductCatalogId()
    {
        for (final CatalogVersionModel catalogVersionModel : catalogVersionService.getSessionCatalogVersions())
        {
            if (!((catalogVersionModel.getCatalog() instanceof ContentCatalogModel) || (catalogVersionModel
                    .getCatalog() instanceof ClassificationSystemModel)))
            {
                return catalogVersionModel.getCatalog().getId();
            }
        }
        return StringUtils.EMPTY;
    }
}
@控制器
@请求映射(value=“/cart”)
公共类CartPageController扩展了AbstractPageController
{
私有静态最终字符串CART\u CMS\u PAGE=“cartPage”;
私有静态最终整数默认值\u COOKIE\u expiration\u AGE=5184000;
私有静态最终字符串默认\u购物车\u标识符\u COOKIE\u NAME=“CART.IDENTIFIER.COOKIE.NAME”;
私有静态最终记录器LOG=Logger.getLogger(CartPageController.class);
@资源(name=“cartFacade”)
私家车门面;
@资源(name=“userService”)
私人用户服务;
@资源(name=“baseStoreService”)
专用BaseStoreService BaseStoreService;
@资源(name=“catalogVersionService”)
私有CatalogVersionService CatalogVersionService;
@RequestMapping(method=RequestMethod.GET)
公共字符串showCart(HttpServletRequest请求、HttpServletResponse响应、最终模型)
引发CMSItemNotFoundException
{
CartData CartData=cartFacade.getSessionCartWithEntryOrdering(true);
最后一个字符串cartCookieIdentifier=getCartCookieIdentifier();
如果(!cartFacade.hasEntries())
{
最终字符串cartId=getCookieValue(请求,cartCookieIdentifier);
最终可选cartDataOptional=cartFacade.getCartsForCurrentUser().stream()
.filter(c->c.getCode().equals(cartId)).findFirst();
if(cartDataOptional.isPresent())
{
cartData=cartDataOptional.get();
}
}
setCookieValue(响应,cartCookieIdentifier,cartData.getCode());
model.addAttribute(“购物车”,cartData);
设置页面模型(模型);
字符串model1=getViewForPage(模型);
返回模式1;
}
受保护的void setupPageModel(模型模型)引发CMSItemNotFoundException
{
storeCmsPageInModel(模型,GetContentPageForLabeloid(CART\u CMS\u页面));
setUpMetaDataForContentPage(模型,GetContentPageForLabeloid(CART\u CMS\u页面));
}
受保护字符串getCookieValue(最终HttpServletRequest请求,最终字符串cookieName)
{
返回Arrays.stream(request.getCookies())
.filter(c->c.getName().equals(cookieName))
.findFirst()
.map(Cookie::getValue)
.orElse(空);
}
受保护的void setCookieValue(最终HttpServletResponse响应、最终字符串cookieName、最终字符串cookieValue)
{
最终Cookie=新Cookie(cookieName、cookieValue);
setMaxAge(默认的cookie过期时间);
addCookie(cookie);
}
受保护的字符串getCartCookieIdentifier()
{
最后一个字符串baseStoreId=getCurrentBaseStoreId();
最后一个字符串catalogId=getCurrentProductCatalogId();
if(StringUtils.isNotEmpty(baseStoreId)&&StringUtils.isNotEmpty(catalogId))
{
返回baseStoreId+“-”+catalogId;
}
返回默认的\u购物车\u标识符\u COOKIE\u名称;
}
受保护的字符串getCurrentBaseStoreId()
{
final BaseStoreModel baseStore=baseStoreService.getCurrentBaseStore();
return baseStore==null?StringUtils.EMPTY:baseStore.getUid();
}
受保护的字符串getCurrentProductCatalogId()
{
对于(最终CatalogVersionModel CatalogVersionModel:catalogVersionService.getSessionCatalogVersions())
{
如果(!((catalogVersionModel.getCatalog()instanceof ContentCatalogModel)| |(catalogVersionModel
.getCatalog()实例(分类系统模型)))
{
返回catalogVersionModel.getCatalog().getId();
}
}
返回StringUtils.EMPTY;
}
}

jsp
页面的内容其实并不重要,因为它可以是空的,而且这种行为仍然存在。我不知道确切的原因是什么。有什么有效的方法来调试这些问题吗?

这是创建B2B站点时常见的错误。解决方法是打开/smartedit并从那里登录到您的站点。Hybris将创建一个适当的会话,您应该能够打开该站点

可能的长期解决方案: 如果您正在创建B2B站点,请检查店面扩展中的spring-filter-config.xml并检查此部分。应该是这样的:

    <alias name="b2cAcceleratorSiteChannels" alias="acceleratorSiteChannels"/>
    <util:set id="b2cAcceleratorSiteChannels" value-type="de.hybris.platform.commerceservices.enums.SiteChannel">
        <ref bean="SiteChannel.B2C"/>
        <ref bean="SiteChannel.B2B"/>
    </util:set>


如果一切正常,您可以删除SiteChannel.B2C这是创建B2B站点时常见的错误。解决方法是打开/smartedit并从那里登录到您的站点。Hybris将创建一个适当的会话,您应该能够打开该站点

可能的长期解决方案: 如果您正在创建B2B站点,请检查店面扩展中的spring-filter-config.xml并检查此部分。应该是这样的:

    <alias name="b2cAcceleratorSiteChannels" alias="acceleratorSiteChannels"/>
    <util:set id="b2cAcceleratorSiteChannels" value-type="de.hybris.platform.commerceservices.enums.SiteChannel">
        <ref bean="SiteChannel.B2C"/>
        <ref bean="SiteChannel.B2B"/>
    </util:set>


如果一切正常,您可以删除SiteChannel.B2C。此行为似乎是由于导入与此页面相关的impex时的错误参数造成的:

INSERT_UPDATE PageTemplate;$contentCV[unique = true];uid[unique = true];name;frontendTemplateName;restrictedPageTypes(code);active[default = true]
;;CartPageTemplate;Cart Page Template;"cartPage";ContentPage;false;
应该是

INSERT_UPDATE PageTemplate;$contentCV[unique = true];uid[unique = true];name;frontendTemplateName;restrictedPageTypes(code);active[default = true]
;;CartPageTemplate;Cart Page Template;"cart/cartPage";ContentPage;false;

“cartPage”
替换为
“cart/cartPage”
发挥了所有的作用。

这种行为似乎是由于导入与此页面相关的impex时的错误参数造成的:

INSERT_UPDATE PageTemplate;$contentCV[unique = true];uid[unique = true];name;frontendTemplateName;restrictedPageTypes(code);active[default = true]
;;CartPageTemplate;Cart Page Template;"cartPage";ContentPage;false;
应该是

INSERT_UPDATE PageTemplate;$contentCV[unique = true];uid[unique = true];name;frontendTemplateName;restrictedPageTypes(code);active[default = true]
;;CartPageTemplate;Cart Page Template;"cart/cartPage";ContentPage;false;

“cartPage”
替换为
“cart/cartPage”
起到了神奇的作用。

如果抛出了
CMSItemNotFoundException
,您对它做了什么吗?您是否尝试过在方法本身内部捕获它,并查看它的原因?另外,调试器是否告诉您没有任何有用的信息?如果抛出了
CMSItemNotFoundException
,您是否对它做了任何处理?有你