2016-07-30 2 views
1

실패, 사용할 수없는 나는 다음과 같은 코드가 있습니다EJB 타이머 서비스가 배포 취소 문맥

package ejbs; 
import javax.annotation.Resource; 

import javax.ejb.Singleton; 
import javax.ejb.Timeout; 
import javax.ejb.Timer; 
import javax.ejb.TimerConfig; 
import javax.ejb.TimerService; 

@Singleton 
public class timerbackup { 

@Resource 
private TimerService timerservice; 

@Timeout 
public void methodTimeout(Timer timer) 
{  
    System.out.println("timeout"); 
} 
public void settimer(long in) 
{  
    Timer timer=timerservice.createSingleActionTimer(in,new TimerConfig()); 
} 
} 

응용 프로그램을 배포 한 후 오류 메시지 "EJB 타이머 서비스를 사용할 수 없습니다"를 등장.

이 문제를 해결하기 위해 내가 다음 단계에 따라 : 구성

  1. 에 액세스 glash 물고기 관리 콘솔 (http://localhost:4848)
  2. 이동 ->서버 설정 ->EJB 컨테이너
  3. 탭 선택 EJB 타이머 서비스
  4. 그리고 타이머 데이터 소스을 작성 : 당신의 JDBC 자원과 (내가 사용 "JDBC/projecto_final") Set/configure the EJB Timer Service’s DataSource에서 제안한 것처럼
  5. 다시 시작 서버

.

결과적으로 TimerService가 작동하지 않는 경우가 있습니다.

Severe: Exception while loading the app 
Severe: Undeployment failed for context /ProjetoEE1 
Info: /file:/E:/formacaoJAVA/2moduloJEE/pratica/projecto_final /projfinal2/ProjetoEE1/build/web/WEB-INF/classes/_DEFAULT_PU logout successful 
Warning: EJB Timer Service is not available. Timers for application with id 96332697224871936 will not be deleted 

Set/configure the EJB Timer Service’s DataSource도이 문제를 언급하고, Glassfish DeploymentException: Error in linking security policy for에 해결책을 제시 : 응용 프로그램을 배포 한 후 다음과 같은 오류 메시지가 나타납니다.

Glassfish DeploymentException: Error in linking security policy for에 제공된 솔루션은 기본적으로 일부 파일을 삭제합니다.

  1. 생성
  2. 이/글래스 피쉬/도메인/yourdomainname glassfishhome에서 모든 컨텐츠를 삭제 글래스 피시 서버/중이 야
  3. 은 글래스 피시는

내가 설치 한 시작일 : 투표 더 대답은 기본적으로 다음 제안 "GlassFish Server 4.1.1"과 같이 작동하지 않습니다. 그 1. 모든

// OSGI 캐시

$ GLASSFISH_HOME/글래스 피쉬/도메인에서 전체 OSGi 프레임 캐시를 삭제되어이 문제를 해결하기 위해 필요한 :

더 투표 두 번째 대답은 기본적으로 다음을 제안한다 이것은 또한 작동하지 않습니다.

내가 할 수있는 일은 무엇입니까?어떤 도움은 매우 그것은 나를 위해 일한

import javax.inject.Singleton; 

으로

import javax.ejb.Singleton; 

를 교체

안부,

라파엘 코스타

+0

저는 타이머가 매우 중요하다고 생각합니다. 많은 사람들이 똑같은 문제를 가지고있을 것이고, 해결 방법을 모르실 것입니다. –

+0

왜 그렇게 생각하니? 먼저 질문에 올바르게 태그를 추가해야합니다. 코드를 게시 한 곳에서 'jsf'가 보입니까? 나는 그것을 'ejb'라고 태그하는 것이 좋습니다. 그리고 GlassFish와 관련하여 매우 강력하게 보이므로 해당 태그를 추가하십시오 (그리고 jsf 태그를 제거하십시오). – Kukeltje

+0

@Kukeltje 대단히 고마워요. –

답변

2

감사 할 것이다. Derby 데이터베이스를 사용하고 있습니까?

0

나는이 문제를 해결했다. 내가 기억한다면 새로운 JDBC 리소스와 새로운 JDBC 연결 풀을 만들었습니다.

다음 링크는 JDBC 자원 및 JDBC 연결 풀을 만드는 방법을 설명합니다. General Steps for Creating a JDBC Resource

관리 콘솔 또는 asadmin 유틸리티를 사용하여 JDBC 자원과 JDBC 연결 풀을 만들 수 있습니다.

다음 링크는 asadmin 유틸리티 사용 방법을 설명합니다. Using the asadmin Utility (관리 콘솔에서 JDBC 자원을 만들려고했는데 JDBC 연결 풀에 오류가 발생했기 때문에이 유틸리티를 사용했습니다)

관리 콘솔에서 생성 된 JDBC 자원의 필드 "풀 이름"은 생성 된 JDBC 연결 풀의 이름과 같습니다.

는 그 후 나는 다음 단계에 따라 :

  1. 구성 ->를 서버 config-> EJB 컨테이너
  2. 는 JDBC의 이름으로 필드 타이머 데이터 소스를 채우기 탭 EJB 타이머 서비스
  3. 를 선택 의지.
  4. 서버

어떤 질문 주시기 바랍니다에게 다시 시작

  • .

    베스트 감사합니다 라파엘 산토스 코스타

  • 0

    나는/도메인 이름/생성 된 폴더를 다시 완전히

  • 건물 응용 프로그램

    를 글래스 피쉬/도메인을 삭제

    1. 에서 "동일한"문제를 해결 한

    2. 글래스 피쉬 응용 프로그램 재개

    필자의 경우 GIT로 풀/푸시 작업을 한 후에 내 응용 프로그램의 새 버전을 설치했고 응용 프로그램이 작동을 멈췄습니다. 그래서 저는이 새로운 빌드를하기 전에 어플리케이션이 잘 작동하고 Glassfish에서 아무 것도 변경되지 않았 음을 압니다.

    내가 다른 다음 사이트 https://dzone.com/articles/solving-ejb-timer-service-not-available-error-in-g-1

    에 대한 몇 가지 설명을 발견 글래스 피시 응용 프로그램 서버가 사용 가능한 EJB 타이머의 상태를 유지하기 위해 임베디드 JavaDB에서는을 사용합니다. 타이머 서비스에 대한 데이터 리소스를 올바르게 설정하지 않으면 EJB 타이머가 복원되어 결국 제대로 작동하지 않게됩니다. 이 경우 일반적으로 "EJB 타이머 서비스를 사용할 수 없음"오류 메시지가 반환됩니다. 이 문제점은 EJB 타이머 서비스를 사용하는 응용 프로그램이 시작 또는 전개되지 못하게합니다.

    첫 번째 솔루션은 JDBC 연결 풀에 가서 더블 핑하여 Timerpool 연결 풀의 상태를 확인하는 것입니다

    은 차단 상황을 극복하기 위해 두 가지 방법이 있습니다. ping이 실패하면 연결 풀을 검사하거나 다시 정의해야합니다.

    연결 풀링에 성공하면 EJB 타이머 마커 파일이있을 수 있습니다. 마커 파일은 EJB 타이머 서비스 시작 또는 복원 중에 문제가 발생할 때마다 작성됩니다.

    마커를 삭제하면 문제가 해결됩니다. as-install-parent/glassfish/domains/domain-name/generated/ejb/아래에있는 마커 파일 "ejb-timer-service-app" Glassfish를 다시 시작하는 것을 잊지 마세요!

  • 관련 문제