2014-11-14 5 views
3

사용자가 이미 인증 된 경우 로그인 및 색인 페이지에서 리디렉션 할 웹 필터가 있습니다. 원래 잘못된 URL 패턴이 있습니다. 나는 잘못된 패턴을 고정하고이를받을 만 재배치를 시도 :Glassfish 4.1에 배포 할 때 잘못된 URL 패턴

java.lang.IllegalArgumentException: Invalid URL Pattern: [{0}] 
at org.glassfish.web.deployment.node.WebResourceCollectionNode.setElementValue(WebResourceCollectionNode.java:136) 

내가 뭔가 누락되었거나 다른 뭔가를 잘못 입력했다 있는지 확인하기 위해 내 응용 프로그램에 주위를 확인. 결국 WebFilter 클래스를 제거하고 web.xml에서 매핑을 제거하고 재배포를 시도했지만 동일한 오류가 계속 발생합니다. 현재 응용 프로그램을 다시 배포 할 수 없습니다.

Google 검색을 사용하여 주변을 확인한 결과 this이 비슷한 문제인 것으로 보이지만 해결 방법은 없습니다.

전체 스택 트레이스 : 어떤 도움을 주시면 감사하겠습니다

Severe: Exception while deploying the app [NCW-war] 
Severe: Exception during lifecycle processing 
java.lang.IllegalArgumentException: Invalid URL Pattern: [{0}] 
at org.glassfish.web.deployment.node.WebResourceCollectionNode.setElementValue(WebResourceCollectionNode.java:136) 
at com.sun.enterprise.deployment.node.SaxParserHandler.endElement(SaxParserHandler.java:583) 
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609) 
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:863) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2973) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) 
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) 
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) 
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) 
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649) 
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:333) 
at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:318) 
at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:245) 
at com.sun.enterprise.deployment.archivist.Archivist.readStandardDeploymentDescriptor(Archivist.java:665) 
at com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:391) 
at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:271) 
at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:280) 
at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:241) 
at com.sun.enterprise.deployment.archivist.ApplicationFactory.openArchive(ApplicationFactory.java:161) 
at org.glassfish.javaee.core.deployment.DolProvider.processDOL(DolProvider.java:203) 
at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:227) 
at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:96) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.loadDeployer(ApplicationLifecycle.java:881) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.setupContainerInfos(ApplicationLifecycle.java:821) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:377) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:360) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:360) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722) 
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534) 
at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224) 
at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189) 
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201) 
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) 
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) 
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565) 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) 
at java.lang.Thread.run(Thread.java:745) 

.

는 -Jarrod

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> 
<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Development</param-value> 
</context-param> 
<context-param> 
    <param-name>primefaces.THEME</param-name> 
    <param-value>trontastic</param-value> 
</context-param> 
<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 
<error-page> 
    <exception-type>java.lang.SecurityException</exception-type> 
    <location>/login-error.xhtml</location> 
</error-page> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<welcome-file-list> 
    <welcome-file>index.xhtml</welcome-file> 
</welcome-file-list> 
<error-page> 
    <error-code>401</error-code> 
    <location>/unauthorized-access.xhtml</location> 
</error-page> 
<error-page> 
    <error-code>403</error-code> 
    <location>/unauthorized-access.xhtml</location> 
</error-page> 
<error-page> 
    <error-code>404</error-code> 
    <location>/page-not-found.xhtml</location> 
</error-page> 
<security-constraint> 
    <display-name>Installations</display-name> 
    <web-resource-collection> 
     <web-resource-name>Installations</web-resource-name> 
     <url-pattern>/installations/*</url-pattern> 
    </web-resource-collection> 
    <web-resource-collection> 
     <web-resource-name>Resources</web-resource-name> 
     <url-pattern>/resources/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <description/> 
     <role-name>Installations</role-name> 
    </auth-constraint> 
</security-constraint> 
<security-constraint> 
    <display-name>Administrator</display-name> 
    <web-resource-collection> 
     <web-resource-name>Administrator</web-resource-name> 
     <url-pattern>/NCW-war/*</url-pattern> 
    </web-resource-collection> 
    <web-resource-collection> 
     <web-resource-name>Resources</web-resource-name> 
     <url-pattern>/resources/*</url-pattern> 
    </web-resource-collection> 
    <web-resource-collection> 
     <web-resource-name>Project Management</web-resource-name> 
     <url-pattern>project-management/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <description/> 
     <role-name>Administrator</role-name> 
    </auth-constraint> 
</security-constraint> 
<security-constraint> 
    <display-name>Analyst</display-name> 
    <web-resource-collection> 
     <web-resource-name>Analyst Pages</web-resource-name> 
     <url-pattern>/analyst/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>PUT</http-method> 
     <http-method>HEAD</http-method> 
     <http-method>POST</http-method> 
     <http-method>DELETE</http-method> 
    </web-resource-collection> 
    <web-resource-collection> 
     <web-resource-name>Resources</web-resource-name> 
     <url-pattern>/resources/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Analyst</role-name> 
    </auth-constraint> 
</security-constraint> 
<security-constraint> 
    <display-name>WAN Analyst</display-name> 
    <web-resource-collection> 
     <web-resource-name>WAN Analyst Pages</web-resource-name> 
     <url-pattern>/analyst/wan/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>PUT</http-method> 
     <http-method>HEAD</http-method> 
     <http-method>POST</http-method> 
     <http-method>DELETE</http-method> 
    </web-resource-collection> 
    <web-resource-collection> 
     <web-resource-name>Resources</web-resource-name> 
     <url-pattern>/resources/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>WAN Analyst</role-name> 
    </auth-constraint> 
</security-constraint> 
<security-constraint> 
    <display-name>Voice Analyst</display-name> 
    <web-resource-collection> 
     <web-resource-name>Voice Analyst Pages</web-resource-name> 
     <url-pattern>/analyst/voice/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>PUT</http-method> 
     <http-method>HEAD</http-method> 
     <http-method>POST</http-method> 
     <http-method>DELETE</http-method> 
    </web-resource-collection> 
    <web-resource-collection> 
     <web-resource-name>Resources</web-resource-name> 
     <url-pattern>/resources/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Voice Analyst</role-name> 
    </auth-constraint> 
</security-constraint> 
<security-constraint> 
    <display-name>Project Manager Pages</display-name> 
    <web-resource-collection> 
     <web-resource-name>Project Manager Pages</web-resource-name> 
     <url-pattern>/project-management/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>PUT</http-method> 
     <http-method>HEAD</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <web-resource-collection> 
     <web-resource-name>Resources</web-resource-name> 
     <url-pattern>/resources/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <description/> 
     <role-name>Project Manager</role-name> 
    </auth-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>LDAP</realm-name> 
    <form-login-config> 
     <form-login-page>/index.xhtml</form-login-page> 
     <form-error-page>/login-error.xhtml</form-error-page> 
    </form-login-config> 
</login-config> 
<security-role> 
    <role-name>Administrator</role-name> 
</security-role> 
<security-role> 
    <role-name>Installations</role-name> 
</security-role> 
<security-role> 
    <role-name>Analyst</role-name> 
</security-role> 
<security-role> 
    <role-name>WAN Analyst</role-name> 
</security-role> 
<security-role> 
    <role-name>Voice Analyst</role-name> 
</security-role> 
<security-role> 
    <role-name>Project Manager</role-name> 
</security-role> 

이 시간에 거기에는 필터가 없어야합니다, 감사합니다.

+0

당신이 질문에 당신의'web.xml' 내용을 추가 할 수 있습니까? – zaerymoghaddam

+0

전체 web.xml? – Dagnarus

+0

먼저 확인해보아야 할 곳이 있다고 생각합니다. 콘텐츠를 게시 할 수 없으면 URL이나 매핑 주소를 확인하십시오. 환영 페이지, 서블릿 매핑 등과 같이 – zaerymoghaddam

답변

4

웹 리소스 모음 Administrator에는 내용에 슬래시가없는 <url-pattern> 태그가 있습니다. 그것은 /project-management/* 대신에 단지 project-management/*을 의미합니다. URL 패턴은 선행 슬래시로 시작하는 것으로 보입니다. web.xml의 다른 모든 URL 패턴은 Administrator을 제외한 /으로 시작됩니다. 어쩌면 이것이 문제의 근본 원인 일 수 있습니다. 그러나 글래스 피시 문제인지 또는 Java EE 스펙의 일부인지는 확실하지 않습니다.

+0

확실히 작동합니다. grepcode에서 스택 트레이스의 첫 번째 클래스를 살펴보고 setElementValue (XMLElement 요소, 문자열 값) 메서드는 서블릿 2.2 웹 앱에서만 누락 된 경우 "/"앞에 붙이기로되어 있습니다. URL 패턴이 며칠 동안 그곳에 있었기 때문에 오류가 더 빨리 나타나지는 않았지만 이상합니다. 도움을 주셔서 감사합니다. – Dagnarus

-1

**

<servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
     <url-pattern>*.png</url-pattern> 
     <url-pattern>*.jpg</url-pattern> 
     <url-pattern>*.css</url-pattern> 
     <url-pattern>*.js</url-pattern> 
    </servlet-mapping> 
+2

이것이 왜 좋은 대답인지 또는 문제 해결 방법에 대해 좀 더 자세히 설명해두면 도움이 될 것입니다. 그런 식으로이 답변을 접하게되는 다른 사람들은 좀 더 많은 문맥을 가질 수 있고 답을 올릴 수 있습니다. – greyseal96