2010-07-09 6 views
6

Quartz.NET의 클라이언트/서버 구현이 제대로 작동하지 않습니다.Quartz.NET, "원격 스케줄러와 통신하는 동안 오류가 발생했습니다."

저는 Quartz를 서비스 (ServerB)로 실행하는 서버 인 ServerA와 ASP.NET 응용 프로그램 (ServerC)을 호스트하는 서버를 가지고 있습니다.

나는 모든 자습서를 따라하고 코드에 대해 자세히 조사했지만 잘못된 것을 알 수는 없다. 서버가 확실히 수신 중이며 포트가 ServerC에서 열려 있음을 확인할 수 있습니다. 관련된 방화벽이 없습니다. 서비스를 실행하는

서버 B는 다운로드 패키지 (Quartz.Server.Service)에 포함 된 다음과 같은 설정 파일의 설정이 있습니다

<quartz> 
    <add key="quartz.server.serviceName" value="quartz" /> 
    <add key="quartz.server.serviceDisplayName" value="Job Scheduler" /> 
    <add key="quartz.scheduler.instanceName" value="RemoteServer" /> 
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" /> 
    <add key="quartz.threadPool.threadCount" value="10" /> 
    <add key="quartz.threadPool.threadPriority" value="Normal" /> 
    <add key="quartz.scheduler.exporter.type" value="Quartz.Simpl.RemotingSchedulerExporter, Quartz" /> 
    <add key="quartz.scheduler.exporter.port" value="5656" /> 
    <add key="quartz.scheduler.exporter.bindName" value="QuartzScheduler" /> 
    <add key="quartz.scheduler.exporter.channelType" value="tcp" /> 
    <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" /> 
    <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" /> 
    <add key="quartz.jobStore.tablePrefix" value="qrtz_" /> 
    <add key="quartz.jobStore.dataSource" value="db" /> 
    <add key="quartz.dataSource.db.provider" value="SqlServer-20" /> 
    <add key="quartz.dataSource.db.connectionString" value="Data Source=ServerA;Initial Catalog=dev;User ID=dev;Password=dev" /> 
    <add key="quartz.jobStore.useProperties" value="true" /> 
    <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" /> 
</quartz> 

는 ASP.NET 응용 프로그램은 다음과 같은 설정이 있습니다

<quartz> 
    <add key="quartz.scheduler.instanceName" value="RemoteClient" /> 
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" /> 
    <add key="quartz.threadPool.threadCount" value="5" /> 
    <add key="quartz.threadPool.threadPriority" value="Normal" /> 
    <add key="quartz.scheduler.proxy" value="true" /> 
    <add key="quartz.scheduler.proxy.address" value="tcp://ServerB:5656/QuartzScheduler" /> 
</quartz> 

나는 많은 것을 시도했다. 때때로 질문 제목에있는 스케줄러 대신 스케줄러가 이미 존재한다는 오류가 발생합니다. 내가 놓친 무엇

private static readonly ISchedulerFactory _schedulerFactory; 
    private static readonly IScheduler _scheduler; 

    static JobScheduleService() { 
     _schedulerFactory = new StdSchedulerFactory(); 
     _scheduler = _schedulerFactory.GetScheduler(); 
    } 

    public static IScheduler GetScheduler() { 
     return _scheduler; 
    } 

:

나는 인해 스레딩 문제로 내가했던 싱글에서 스케줄러를 작성해야 다른 곳에서 읽었? TIA


웹 서버에서 텔넷 상자를 열고 쿼츠 서버에 연결하면 서비스가 확실히 응답합니다. 몇자를 입력하면 Quartz에서 오류가 발생합니다.

이 정보가 도움이됩니까? 나는. 연결 문제가 아닙니다.

Telnet http://www.freeimagehosting.net/uploads/3bd8cd3f53.png

+0

quartz 서비스 또는 원격으로 연결 한 응용 프로그램에서 dll 파일이 누락 되었습니까? dll 이름을 공유 하시겠습니까? 석영 서버에 원격으로 연결하는 동안 동일한 문제가 발생합니다. – user2748614

+0

그것은 서버에 있었지만 어떤 DLL인지는 기억하지 못했습니다. Quartz.Core.dll, Quartz.Service.dll 또는 IJob 인터페이스를 구현 한 어셈블리 였을 것입니다. – enashnash

답변

1

오류 메시지가 약간 오도 된 것으로 나타났습니다. 오류는 서버와의 통신에 전혀 없습니다. 문제는 배포의 일부로 복사되지 않은 누락 된 DLL 파일입니다. 기본 오류는 스케줄러가 DLL을 찾을 수 없기 때문입니다.

+0

quartz.net 서버에서 찾을 수없는 클래스를 참조하는 작업을 추가하려고 할 때도이 오류가 발생하는 것을 발견했습니다. – EBarr

+0

dll이 무엇인지 알기를 좋아했을 것입니다. 지금이 문제가 있습니다. – gooddadmike

+0

그것은 IJob 구현체를 만들었던 DLL이었으며, Quartz DLL 자체와 관련이 없습니다. – enashnash

2

는 quartz.threadpool.xxxxxx 속성 중 하나를 설정하지보십시오.

+0

쿼츠 서버에서 주석 처리하고 서비스를 다시 시작한 다음 웹 서버에서 다시 시작했습니다. 나는 여전히 같은 오류가 발생합니다. – enashnash

+0

좀 더 자세히 설명 했어야하는데 ... 클라이언트 쪽에서 만 주석 처리하십시오. 도움이되지 않을 수도 있지만 이것이 우리가하고있는 일과하는 일에서 볼 수있는 유일한 차이입니다. – jvilalta

+0

같은 오류가 나타납니다. 다른 제안? – enashnash

관련 문제